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

【Redis】 Redis 列表指令指南


这是我父亲 日记里的文字
这是他的生命 留下留下来的散文诗
几十年后 我看着泪流不止
可我的父亲已经 老得像一个影子
                     🎵 许飞《父亲写的散文诗》


Redis 是一个开源的内存数据库,支持多种数据结构,其中列表(List)是一种常用的数据类型。Redis 列表是一个简单的链表,允许在头部和尾部进行快速的插入和删除操作,非常适合消息队列等应用场景。本文将详细介绍 Redis 列表的常用指令及其使用方法。

一、基本操作

  1. 左/右插入和弹出
    LPUSH
    LPUSH 命令用于将一个或多个值插入到列表头部。如果列表不存在,将创建一个空列表并执行插入操作。
LPUSH key value [value ...]

示例:

LPUSH mylist "world"
LPUSH mylist "hello"
# mylist 现在包含 ["hello", "world"]

RPUSH
RPUSH 命令用于将一个或多个值插入到列表尾部。如果列表不存在,将创建一个空列表并执行插入操作。

RPUSH key value [value ...]

示例:

RPUSH mylist "hello"
RPUSH mylist "world"
# mylist 现在包含 ["hello", "world"]

LPOP
LPOP 命令用于移除并返回列表头部的元素。

LPOP key

示例:

LPOP mylist
# 返回 "hello"
# mylist 现在包含 ["world"]

RPOP
RPOP 命令用于移除并返回列表尾部的元素。

RPOP key

示例:

RPOP mylist
# 返回 "world"
# mylist 现在包含 ["hello"]

二、获取列表元素

1. 获取指定范围内的元素

LRANGE
LRANGE 命令用于获取列表中指定范围内的元素。索引从0开始,可以使用负数表示从列表尾部开始的偏移量。

LRANGE key start stop

示例:

RPUSH mylist "one"
RPUSH mylist "two"
RPUSH mylist "three"
LRANGE mylist 0 1
# 返回 ["one", "two"]
LRANGE mylist 0 -1
# 返回 ["one", "two", "three"]
2. 获取列表长度

LLEN
LLEN 命令用于获取列表的长度。

LLEN key

示例:

LLEN mylist
# 返回 3
3. 获取指定索引的元素

LINDEX
LINDEX 命令用于通过索引获取列表中的元素。索引从0开始,可以使用负数表示从列表尾部开始的偏移量。

LINDEX key index

示例:

LINDEX mylist 1
# 返回 "two"
4. 设置指定索引的元素

LSET
LSET 命令用于设置列表中指定索引的元素。如果索引超出范围,将返回错误。

LSET key index value

示例:

LSET mylist 1 "new"
LINDEX mylist 1
# 返回 "new"

三、删除列表元素

1. 删除指定值的元素

LREM
LREM 命令用于从列表中删除指定值的元素。可以指定删除的数量,正数表示从头到尾删除,负数表示从尾到头删除,0 表示删除所有匹配的元素。

LREM key count value

示例:

RPUSH mylist "hello"
RPUSH mylist "hello"
RPUSH mylist "world"
LREM mylist -2 "hello"
# mylist 现在包含 ["world"]
2. 截取列表

LTRIM
LTRIM 命令用于对列表进行修剪,只保留指定范围内的元素。

LTRIM key start stop

示例:

RPUSH mylist "one"
RPUSH mylist "two"
RPUSH mylist "three"
LTRIM mylist 1 -1
# mylist 现在包含 ["two", "three"]

四、阻塞操作

1. 阻塞弹出元素

BLPOP
BLPOP 命令用于阻塞地移除并返回列表的第一个元素。如果列表为空,则阻塞等待直到有新的元素插入或超时。

BLPOP key [key ...] timeout

示例:

BLPOP mylist 5
# 如果 mylist 为空,阻塞最多 5 秒

BRPOP
BRPOP 命令用于阻塞地移除并返回列表的最后一个元素。如果列表为空,则阻塞等待直到有新的元素插入或超时。

BRPOP key [key ...] timeout

示例:

BRPOP mylist 5
# 如果 mylist 为空,阻塞最多 5 秒

五、插入和替换操作

1. 在指定元素前后插入新元素

LINSERT
LINSERT 命令用于在列表的指定值前或后插入新元素。如果指定值不存在,将不进行任何操作。

LINSERT key BEFORE|AFTER pivot value

示例:

RPUSH mylist "hello"
RPUSH mylist "world"
LINSERT mylist BEFORE "world" "there"
# mylist 现在包含 ["hello", "there", "world"]

结论

Redis 列表提供了丰富的指令,可以实现从简单的插入、删除到复杂的阻塞操作等多种功能。通过掌握这些指令,您可以充分利用 Redis 列表来处理各种应用场景,如消息队列、任务调度、日志存储等。希望这篇指南能帮助您更好地理解和使用 Redis 列表指令,如果有任何问题或需要进一步的帮助,欢迎随时提问。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • python open cv(图像处理的基本操作)
  • Spring Bean生命周期
  • 什么是单例模式?
  • 【两整数之和】python刷题记录
  • Go并发编程
  • 简单的位运算
  • 设计模式实战:社交网络平台的设计与实现
  • 03:【stm32】GPIO
  • 【STM32】“stm32f10x.h” 头文件的作用
  • iPhone怎么大批量删除照片:释放你的存储空间
  • 【第十天】进程和线程的区别 并行和并发有什么区别 解释一下用户态和核心态
  • C语言初阶(11)
  • 元组(tuple)—数据容器
  • 常见的MySQL数据库面试题
  • 样本熵与近似熵:度量时间序列复杂性的方法
  • 【399天】跃迁之路——程序员高效学习方法论探索系列(实验阶段156-2018.03.11)...
  • eclipse的离线汉化
  • Hibernate【inverse和cascade属性】知识要点
  • Vue2 SSR 的优化之旅
  • VuePress 静态网站生成
  • Webpack 4x 之路 ( 四 )
  • web标准化(下)
  • windows下如何用phpstorm同步测试服务器
  • 给自己的博客网站加上酷炫的初音未来音乐游戏?
  • 基于 Babel 的 npm 包最小化设置
  • 猫头鹰的深夜翻译:JDK9 NotNullOrElse方法
  • 前端面试题总结
  • 什么软件可以剪辑音乐?
  • 为物联网而生:高性能时间序列数据库HiTSDB商业化首发!
  • 400多位云计算专家和开发者,加入了同一个组织 ...
  • ​LeetCode解法汇总1276. 不浪费原料的汉堡制作方案
  • ​如何防止网络攻击?
  • # 利刃出鞘_Tomcat 核心原理解析(七)
  • #Datawhale X 李宏毅苹果书 AI夏令营#3.13.2局部极小值与鞍点批量和动量
  • #图像处理
  • #微信小程序:微信小程序常见的配置传旨
  • $.ajax()方法详解
  • (Matalb分类预测)GA-BP遗传算法优化BP神经网络的多维分类预测
  • (八)五种元启发算法(DBO、LO、SWO、COA、LSO、KOA、GRO)求解无人机路径规划MATLAB
  • (二)JAVA使用POI操作excel
  • (二)springcloud实战之config配置中心
  • (附源码)c#+winform实现远程开机(广域网可用)
  • (附源码)计算机毕业设计ssm-Java网名推荐系统
  • (附源码)计算机毕业设计ssm基于Internet快递柜管理系统
  • (简单) HDU 2612 Find a way,BFS。
  • (论文阅读23/100)Hierarchical Convolutional Features for Visual Tracking
  • (一)插入排序
  • (已解决)Bootstrap精美弹出框模态框modal,实现js向modal传递数据
  • (原创)攻击方式学习之(4) - 拒绝服务(DOS/DDOS/DRDOS)
  • (转)微软牛津计划介绍——屌爆了的自然数据处理解决方案(人脸/语音识别,计算机视觉与语言理解)...
  • .ai域名是什么后缀?
  • .Net Framework 4.x 程序到底运行在哪个 CLR 版本之上
  • .NET Framework 的 bug?try-catch-when 中如果 when 语句抛出异常,程序将彻底崩溃
  • .NET轻量级ORM组件Dapper葵花宝典
  • /etc/fstab和/etc/mtab的区别