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

4 Redis4 List命令类型讲解

Redis 列表(List)命令详解

1. Redis 列表(List)简介

Redis 列表(List)是一个简单的字符串列表,按照插入顺序排序。它可以用作 栈(Stack)队列(Queue),提供了丰富的操作方式。Redis 列表的底层实现是一个 双向链表,因此在头部和尾部的操作非常高效。

2. Redis List 相关命令

2.1 添加元素

命令描述
LPUSH key value [value ...]将一个或多个值插入到列表头部
RPUSH key value [value ...]将一个或多个值插入到列表尾部
LPUSHX key value只有在列表存在时,才将值插入到列表头部
RPUSHX key value只有在列表存在时,才将值插入到列表尾部
示例:
LPUSH mylist "a" "b" "c"   # 列表头部插入 c, b, a
RPUSH mylist "x" "y" "z"   # 列表尾部插入 x, y, z
LRANGE mylist 0 -1          # 查看列表所有元素

结果:

"c" "b" "a" "x" "y" "z"

2.2 获取列表元素

命令描述
LRANGE key start stop获取列表指定范围的元素
LINDEX key index获取列表中指定索引的元素
LLEN key获取列表长度
示例:
LRANGE mylist 1 3   # 获取索引 1 到 3 之间的元素
LINDEX mylist 2     # 获取索引 2 的元素
LLEN mylist         # 获取列表长度

2.3 修改和删除元素

命令描述
LSET key index value通过索引设置列表元素的值
LREM key count value移除列表中 count 个值等于 value 的元素
LTRIM key start stop修剪列表,使列表只保留指定范围内的元素
示例:
LSET mylist 2 "new_value"  # 将索引 2 的元素设置为 "new_value"
LREM mylist 1 "a"         # 删除一个值为 "a" 的元素
LTRIM mylist 1 3          # 只保留索引 1 到 3 之间的元素

2.4 移除和弹出元素

命令描述
LPOP key移除并返回列表的第一个元素
RPOP key移除并返回列表的最后一个元素
RPOPLPUSH source destination移除 source 列表的最后一个元素,并将该元素添加到 destination 列表的头部
BLPOP key [key ...] timeout阻塞式移除并返回列表的第一个元素(如果列表为空则等待)
BRPOP key [key ...] timeout阻塞式移除并返回列表的最后一个元素(如果列表为空则等待)
BRPOPLPUSH source destination timeout阻塞式弹出一个值,并推入另一个列表
示例:
LPOP mylist         # 移除并获取第一个元素
RPOP mylist         # 移除并获取最后一个元素
RPOPLPUSH mylist newlist  # 将 mylist 的最后一个元素移到 newlist 的头部
BLPOP mylist 5      # 如果列表为空,则等待 5 秒,直到有元素可弹出

3. Redis List 适用场景

  1. 消息队列:使用 LPUSH + BRPOP 实现生产者-消费者模式。

  2. 任务队列:可用于处理异步任务,将任务存入列表,然后异步消费。

  3. 排行榜:可以用 LPUSH 添加数据,LRANGE 获取排行榜前 N 名。

  4. 最近访问记录:存储用户最近的操作记录,使用 LPUSH 插入,LTRIM 只保留最新的 N 条。


4. 总结

Redis 列表(List)提供了丰富的操作,适用于多种场景。掌握 LPUSHRPUSHLPOPRPOPBLPOP 等命令,可以在实际项目中高效使用 Redis 处理队列和有序数据。

希望这篇文章能帮助你更好地理解和使用 Redis 列表!

http://www.lryc.cn/news/546961.html

相关文章:

  • CentOS 7 安装 Redis6.2.6
  • 数据库原理4
  • doris: MySQL
  • Django模型数据删除:详解两种方式
  • C++并发以及多线程的秘密
  • 自学微信小程序的第十二天
  • ⭐算法OJ⭐跳跃游戏【贪心算法】(C++实现)Jump Game 系列 I,II
  • 带你从入门到精通——自然语言处理(五. Transformer中的自注意力机制和输入部分)
  • ubuntu挂载固态硬盘
  • WPF+WebView 基础
  • 国内光子AI智能引擎:OptoChat AI在南京江北新区亮相
  • vscode离线配置远程服务器
  • 【安装】SQL Server 2005 安装及安装包
  • 使用Maven搭建Spring Boot框架
  • 将docker容器打包为.tar包
  • SYSTEM文件夹下的文件
  • GPPT: Graph Pre-training and Prompt Tuning to Generalize Graph Neural Networks
  • 【SegRNN 源码理解】PMF的多步并行预测
  • 构建自己的AI客服【根据用户输入生成EL表达式】
  • (50)[HGAME 2023 week2]before_main
  • 机器学习数学基础:39.样本和隐含和残差协方差矩阵
  • java之http传MultipartFile文件
  • 深入解析SpringMVC中Http响应的实现机制
  • 构建一个支持精度、范围和负数的-Vue-数字输入框
  • 尚硅谷爬虫note14
  • 1438. 绝对差不超过限制的最长连续子数组
  • ZCC5090EA适用于TYPE-C接口,集成30V OVP功能, 最大1.5A充电电流,带NTC及使能功能,双节锂电升压充电芯片替代CS5090EA
  • Dify 开源大语言模型应用开发平台使用(二)
  • 【LangFuse】数据集与测试
  • 【Python】如何解决Jupyter Notebook修改外部模块后必须重启内核的问题?