当前位置: 首页 > news >正文

87、Redis 的 value 所支持的数据类型(String、List、Set、Zset、Hash)---->List相关命令

本次讲解要点:
List相关命令:是指value中的数据类型

启动redis服务器:
打开小黑窗:
C:\Users\JH>e:
E:>cd E:\install\Redis6.0\Redis-x64-6.0.14\bin
E:\install\Redis6.0\Redis-x64-6.0.14\bin>redis-server.exe redis.windows.conf

启动redis客户端:
小黑窗:redis-cli

★ Redis的数据类型(都是针对Redis的value而言)

redis和map差不多。
Map 只能保存在内存中,
redis可以保存在磁盘。

Redis的key都是String

▲ value支持如下5种数据类型:

String: 最基本的数据类型,可保存任何的数据。
List: 元素是String的有序集合,集合内的元素可以重复。
Set: 元素是String的无序集合,集合内的数据不能重复。
Zset: 元素是String的有序集合,集合内的数据不能重复。
Hash: 也是key-value集合(类似Java的Map),key和value都是String类型的数据。这种类型主要用于保存对象。

Redis为不同数据类型提供了不同的操作命令,因此特定类型的数据需要使用对应类型的命令来执行操作。

★ List相关的命令

在这里插入图片描述
Redis 的 List 和 Java 的 List 是有些相似的,只不过 Redis 的 List 的元素都是String类型。
Redis的List最多可包含 2^32-1个元素,其实跟 Java 的 int 的取值范围有点像。
但是这里的2^32-1是表示list可以存储的具体的个数。

LPUSH key value [value …]: 向key对应List的左边(头部,索引较小一端)添加一个或多个元素。
因此通过该命令新增的元素的索引始终是0

LPUSHX key value: LPUSH的安全版本,仅当key对应的List存在时有效。

LINDEX key index: 获取key对应List的index处的元素。

LINSERT key BEFORE|AFTER pivot value: 在key对应List的pivot元素之前或之后插入新的value元素。
该命令要求被参照的元素、List都是存在,否则就会返回-1。

LLEN key: 返回key对应List的长度。

LPOP key: 弹出并返回key对应List的第一个元素(索引为0的元素)。

LRANGE key start stop: 获取key对应List中start到stop范围的元素。
此处的range会前后边界都包括了。

LREM key count value: 从key对应的List中删除count个value元素。
如果count大于0,则从左到右删除count个value元素;
如果count小于0,则从右到左删除count个value元素;
如果count等于0,则删除所有的value元素。

LSET key index value: 将key对应List的index处的元素改为value。

LTRIM key start stop: 修剪List:只保留key对应List的start到stop之间的元素。
此处的range会前后边界都包括了。

RPOP key: 弹出并返回key对应List的最后一个元素。

RPOPLPUSH source destination: 弹出source List的最后一个元素,添加到destination List的左边(头部),
并返回该元素。
如果destination对应的List不存在,该命令会创建一个新的List。

RPUSH key value [value …]: 向key对应List的右边(尾部)添加一个或多个元素。
因此通过该命令新增的元素的索引始终是长度-1

RPUSHX key value: RPUSH的安全版本,仅当key对应的List存在时有效。

BLPOP key [key… ] timeout: LPOP的阻塞版本。
弹出、并返回多个List的第一个元素,如果某个List没有元素,
该命令会阻塞进程,直到所有List都有元素弹出或超时。该命令的B代表Block。

BRPOP key [key ] timeout: RPOP的阻塞版本。弹出、并返回多个List的最后一个元素,
如果某个List没有元素,该命令会阻塞进程,直到所有List都有元素弹出或超时。

BRPOPLPUSH source destination timeout: RPOPLPUSH的阻塞版本,如果source中没有元素,该命令会阻塞进程,
直到source有元素弹出或超时。

演示

LPUSH key value [value …]: 向key对应List的左边(头部,索引较小一端)添加一个或多个元素。
因此通过该命令新增的元素的索引始终是0

注意: 在添加元素的时候,不要用逗号隔开,不然逗号会被认为是该元素的一部分,
比如 b1, b2 ----- 那么这个元素就是 【b1,】【b2】
在这里插入图片描述

LPUSHX key value: LPUSH的安全版本,仅当key对应的List存在时有效。
就是Redis要存在这个key才能添加list元素的操作。如图,reids中没有name这个key,所以无法添加该list集合及其元素。
在这里插入图片描述

RPUSH key value [value …]: 向key对应List的右边(尾部)添加一个或多个元素。
因此通过该命令新增的元素的索引始终是长度-1
在这里插入图片描述

RPUSHX key value: RPUSH的安全版本,仅当key对应的List存在时有效。
同理,要有这个key才能执行该操作,也可以说要往这个list添加元素,那么得先存在这个key-value。

LINDEX key index: 获取key对应List的index处的元素。
在这里插入图片描述

LINSERT key BEFORE|AFTER pivot value: 在key对应List的pivot元素之前或之后插入新的value元素。
该命令要求被参照的元素、List都是存在,否则就会返回-1。
在这里插入图片描述

LLEN key: 返回key对应List的长度。
在这里插入图片描述

LPOP key: 弹出并返回key对应List的第一个元素(索引为0的元素)。
在这里插入图片描述

LRANGE key start stop: 获取key对应List中start到stop范围的元素。
此处的range会前后边界都包括了。
在这里插入图片描述

LREM key count value: 从key对应的List中删除count个value元素。
如果count大于0,则从左到右删除count个value元素;
如果count小于0,则从右到左删除count个value元素;
如果count等于0,则删除所有的value元素。

在这里插入图片描述

LSET key index value: 将key对应List的index处的元素改为value。
在这里插入图片描述

LTRIM key start stop: 修剪List:只保留key对应List的start到stop之间的元素。
此处的range会前后边界都包括了。
在这里插入图片描述

RPOP key: 弹出(删除)并返回key对应List的最后一个元素。
在这里插入图片描述

RPOPLPUSH source destination: 弹出 source List的最后一个元素,添加到 destination List的左边(头部),
并返回该元素。
如果destination对应的List不存在,该命令会创建一个新的List。
在这里插入图片描述

BRPOPLPUSH source destination timeout: RPOPLPUSH的阻塞版本,如果source中没有元素,该命令会阻塞进程,
直到source有元素弹出或超时。

在这里插入图片描述

BLPOP key [key… ] timeout: LPOP的阻塞版本。
弹出、并返回多个List的第一个元素,如果某个List没有元素,
该命令会阻塞进程,直到所有List都有元素弹出或超时。该命令的B代表Block。

添加多个key,但是只弹出第一个key的数据

在这里插入图片描述

BRPOP key [key ] timeout: RPOP的阻塞版本。弹出、并返回多个List的最后一个元素,
如果某个List没有元素,该命令会阻塞进程,直到所有List都有元素弹出或超时。
在这里插入图片描述

相关文章:

87、Redis 的 value 所支持的数据类型(String、List、Set、Zset、Hash)---->List相关命令

本次讲解要点: List相关命令:是指value中的数据类型 启动redis服务器: 打开小黑窗: C:\Users\JH>e: E:>cd E:\install\Redis6.0\Redis-x64-6.0.14\bin E:\install\Redis6.0\Redis-x64-6.0.14\bin>redis-server.exe redi…...

Celery结合flask完成异步任务与定时任务

Celery 常用于 web 异步任务、定时任务等。 使用 redis 作为 Celery的「消息代理 / 消息中间件」。 这里通过Flask-Mail使用qq邮箱延时发送邮件作为示例 pip install celery pip install redis pip install Flask-Mail1、使用flask发送邮件 使用 Flask-Mail 发送邮件需要进行…...

前端项目练习(练习-001-纯原生)

先创建一个空文件夹,名字为web-001,然后用idea开发工具打开,如图: 可以看到,这是个彻底的空项目,创建 index.html index.js index.css三个文件,如图: 其中,html文件内容如下&am…...

基于微信小程序的游戏账号交易买卖平台设计与实现(源码+lw+部署文档+讲解等)

文章目录 前言系统主要功能:具体实现截图论文参考详细视频演示为什么选择我自己的网站自己的小程序(小蔡coding)有保障的售后福利 代码参考源码获取 前言 💗博主介绍:✌全网粉丝10W,CSDN特邀作者、博客专家、CSDN新星计…...

2023 年 Bitget Wallet 测评

对Bitget Wallet钱包的看法 Bitget Wallet在安全性、产品实力和使用体验方面可与Metamask媲美,甚至有所超越,唯一稍显不足的是知名度稍逊一筹。在众多钱包中,Bitget Wallet是拥有最全面的钱包之一,尤其适合那些希望一步到位&…...

医疗图像分割指标

医疗图像其中两种图像格式:MRI(Magnetic Resonance Imaging,磁共振成像)、CT(Computed Tomography,计算机断层),常存成 .nii.gz 格式。都是 3D 的 H W L H \times W \times L HWL…...

零代码编程:用ChatGPT批量修改文件夹名称中的大小写

一个文件夹下面有很多个子文件夹,要把文件夹中的大写数字全部重命名为小写数字,比如将二 三 四,改成: 2 34 在ChatGPT中输入提示词如下: 你是一个Python编程专家,要完成一个文件夹重命名的任务。具体步骤如…...

webpack:详解cache模块常用配置

背景 持久化缓存算得上是 Webpack 5 最令人振奋的特性之一,它能够将首次构建结果持久化到本地文件系统,在下次执行构建时跳过一系列解析、链接、编译等非常消耗性能的操作,直接复用 module、chunk 的构建结果。 cache 会在开发模式被设置成…...

云原生Kubernetes:Pod控制器

目录 一、理论 1.Pod控制器 2.Deployment 控制器 3.SatefulSet 控制器 4.DaemonSet 控制器 5.Job 控制器 6.CronJob 控制器 二、实验 1.Deployment 控制器 2.SatefulSet 控制器 3.DaemonSet 控制器 4.Job 控制器 5.CronJob 控制器 三、问题 1. showmount -e 报错…...

数据库基础与MySQL入门

在当今的数字化世界中,数据如同生命之水,它贯穿于各种应用和服务中。尤其在游戏行业,例如经典的《三国志》,数据库管理成了一个不可或缺的环节。这不仅涉及到用户信息的存储,还涉及到游戏状态、积分、交易等复杂的数据处理需求。 MySQL作为一个广受欢迎的数据库管理系统,…...

探索Java爬虫框架:解锁网络数据之门

引言: 随着互联网时代的发展,大量的数据被存储在各种网页中。对于开发者而言,如何高效地获取和处理这些网络数据成为了一个重要的问题。而Java作为一门强大的编程语言,也有许多优秀的爬虫框架供开发者选择和使用。本文将带您深入…...

智慧燃气平台的总体架构到底应怎样设计?

关键词:智慧燃气、智慧燃气平台、智能燃气、智能监控 智慧燃气平台功能设计的一些方向和思考: 1、资源统一,管理调度 城市燃气智慧调度运营管理平台收集并且整理出每个业务系统信息,并且根据所整理出的信息结果制定出标准规范&…...

MonkeyRunner测试步骤

首先把安卓SDK的 环境变量给配置好,这里就不再多解释,自己google 然后将自己的安卓设备打开调试模式,USB连接至电脑,运行CMD,输入命令adb devices 查看你的安卓设备的ID(ID后面写程序会调用),…...

Konva基本处理流程和相关架构设计

前言 canvas是使用JavaScript基于上下文对象进行2D图形的绘制的HTML元素,通常用于动画、游戏画面、数据可视化、图片编辑以及实时视频处理等方面。基于Canvas之上,诞生了例如 PIXI、ZRender、Fabric、Konva等 Canvas渲染引擎,兼顾易用的同时…...

人工智能AI知多少?

摘要 人工智能(Artificial Intelligence,简称AI)是一项前沿技术,正在快速发展并渗透到各个领域。然而,对于大多数人来说,人工智能仍然是一个陌生而复杂的概念。本文旨在对人工智能进行扫盲,介绍其基本概念、应用领域以及当前热门的人工智能模型。通过具体的例子,读者将…...

leetcode1610. 可见点的最大数目(java)

可见点的最大数目 题目描述滑动窗口 题目描述 难度 - 困难 leetcode1610. 可见点的最大数目 给你一个点数组 points 和一个表示角度的整数 angle ,你的位置是 location ,其中 location [posx, posy] 且 points[i] [xi, yi] 都表示 X-Y 平面上的整数坐标…...

Apache Flume

Flume 1.9.0 Developer Guide【Flume 1.9.0开发人员指南】 Introduction【介绍】 摘自:Flume 1.9.0 Developer Guide — Apache Flume Overview【概述】 Apache Flume is a distributed, reliable, and available system for efficiently collecting, aggregati…...

【切片】基础不扎实引发的问题

本次文章主要是来聊聊关于切片传值需要注意的问题,如果不小心,则很容易引发线上问题,如果不够理解,可能会出现奇奇怪怪的现象 问题情况: 小 A 负责一个模块功能的实现,在调试代码的时候可能不仔细&#x…...

CVE-2023-5129 libwebp堆缓冲区溢出漏洞影响分析

漏洞简述 近日苹果、谷歌、Mozilla和微软等公司积极修复了libwebp组件中的缓冲区溢出漏洞,相关时间线如下: 9月7日,苹果发布紧急更新,修复了此前由多伦多大学公民实验室报告的iMessage 0-click 漏洞,漏洞被认为已经被…...

leetcode做题笔记155. 最小栈

设计一个支持 push ,pop ,top 操作,并能在常数时间内检索到最小元素的栈。 实现 MinStack 类: MinStack() 初始化堆栈对象。void push(int val) 将元素val推入堆栈。void pop() 删除堆栈顶部的元素。int top() 获取堆栈顶部的元素。int get…...

在软件开发中正确使用MySQL日期时间类型的深度解析

在日常软件开发场景中,时间信息的存储是底层且核心的需求。从金融交易的精确记账时间、用户操作的行为日志,到供应链系统的物流节点时间戳,时间数据的准确性直接决定业务逻辑的可靠性。MySQL作为主流关系型数据库,其日期时间类型的…...

深入剖析AI大模型:大模型时代的 Prompt 工程全解析

今天聊的内容,我认为是AI开发里面非常重要的内容。它在AI开发里无处不在,当你对 AI 助手说 "用李白的风格写一首关于人工智能的诗",或者让翻译模型 "将这段合同翻译成商务日语" 时,输入的这句话就是 Prompt。…...

51c自动驾驶~合集58

我自己的原文哦~ https://blog.51cto.com/whaosoft/13967107 #CCA-Attention 全局池化局部保留,CCA-Attention为LLM长文本建模带来突破性进展 琶洲实验室、华南理工大学联合推出关键上下文感知注意力机制(CCA-Attention),…...

1688商品列表API与其他数据源的对接思路

将1688商品列表API与其他数据源对接时,需结合业务场景设计数据流转链路,重点关注数据格式兼容性、接口调用频率控制及数据一致性维护。以下是具体对接思路及关键技术点: 一、核心对接场景与目标 商品数据同步 场景:将1688商品信息…...

多模态商品数据接口:融合图像、语音与文字的下一代商品详情体验

一、多模态商品数据接口的技术架构 (一)多模态数据融合引擎 跨模态语义对齐 通过Transformer架构实现图像、语音、文字的语义关联。例如,当用户上传一张“蓝色连衣裙”的图片时,接口可自动提取图像中的颜色(RGB值&…...

linux arm系统烧录

1、打开瑞芯微程序 2、按住linux arm 的 recover按键 插入电源 3、当瑞芯微检测到有设备 4、松开recover按键 5、选择升级固件 6、点击固件选择本地刷机的linux arm 镜像 7、点击升级 (忘了有没有这步了 估计有) 刷机程序 和 镜像 就不提供了。要刷的时…...

React19源码系列之 事件插件系统

事件类别 事件类型 定义 文档 Event Event 接口表示在 EventTarget 上出现的事件。 Event - Web API | MDN UIEvent UIEvent 接口表示简单的用户界面事件。 UIEvent - Web API | MDN KeyboardEvent KeyboardEvent 对象描述了用户与键盘的交互。 KeyboardEvent - Web…...

2025 后端自学UNIAPP【项目实战:旅游项目】6、我的收藏页面

代码框架视图 1、先添加一个获取收藏景点的列表请求 【在文件my_api.js文件中添加】 // 引入公共的请求封装 import http from ./my_http.js// 登录接口(适配服务端返回 Token) export const login async (code, avatar) > {const res await http…...

【HTTP三个基础问题】

面试官您好!HTTP是超文本传输协议,是互联网上客户端和服务器之间传输超文本数据(比如文字、图片、音频、视频等)的核心协议,当前互联网应用最广泛的版本是HTTP1.1,它基于经典的C/S模型,也就是客…...

3-11单元格区域边界定位(End属性)学习笔记

返回一个Range 对象,只读。该对象代表包含源区域的区域上端下端左端右端的最后一个单元格。等同于按键 End 向上键(End(xlUp))、End向下键(End(xlDown))、End向左键(End(xlToLeft)End向右键(End(xlToRight)) 注意:它移动的位置必须是相连的有内容的单元格…...