Redis(14)Redis的列表(List)类型有哪些常用命令?

Redis 的列表(List)类型是一个链表结构,它支持在列表的头部和尾部进行快速的插入和删除操作。列表类型非常适合实现栈、队列等数据结构。下面详细介绍 Redis 列表类型的常用命令,并结合代码示例进行展示。

1. LPUSH - 在列表头部插入元素

LPUSH 命令用于在列表的头部插入一个或多个元素。

bash 复制代码
LPUSH key value1 [value2 ...]

示例:

bash 复制代码
LPUSH mylist "World"
LPUSH mylist "Hello"

2. RPUSH - 在列表尾部插入元素

RPUSH 命令用于在列表的尾部插入一个或多个元素。

bash 复制代码
RPUSH key value1 [value2 ...]

示例:

bash 复制代码
RPUSH mylist "Redis"

3. LPOP - 移除并返回列表头部的元素

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

bash 复制代码
LPOP key

示例:

bash 复制代码
LPOP mylist

4. RPOP - 移除并返回列表尾部的元素

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

bash 复制代码
RPOP key

示例:

bash 复制代码
RPOP mylist

5. LRANGE - 获取列表指定范围内的元素

LRANGE 命令用于获取列表中指定范围内的元素,范围用起始和结束索引指定,索引从 0 开始。

bash 复制代码
LRANGE key start stop

示例:

bash 复制代码
LRANGE mylist 0 -1  # 获取整个列表

6. LINDEX - 获取列表中指定索引的元素

LINDEX 命令用于获取列表中指定索引的元素。

bash 复制代码
LINDEX key index

示例:

bash 复制代码
LINDEX mylist 0

7. LLEN - 获取列表的长度

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

bash 复制代码
LLEN key

示例:

bash 复制代码
LLEN mylist

8. LSET - 设置列表中指定索引的元素

LSET 命令用于设置列表中指定索引的元素。

bash 复制代码
LSET key index value

示例:

bash 复制代码
LSET mylist 0 "New Value"

9. LREM - 移除列表中与指定值相等的元素

LREM 命令用于移除列表中与指定值相等的元素。

bash 复制代码
LREM key count value
  • count > 0:从头到尾移除最多 count 个元素
  • count < 0:从尾到头移除最多 count 个元素
  • count = 0:移除所有匹配的元素

示例:

bash 复制代码
LREM mylist 1 "Hello"

10. LTRIM - 对列表进行修剪,只保留指定范围内的元素

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

bash 复制代码
LTRIM key start stop

示例:

bash 复制代码
LTRIM mylist 0 1

11. BLPOP - 阻塞式移除并返回列表的头部元素

BLPOP 命令用于阻塞式地移除并返回列表的头部元素,如果列表为空,则阻塞等待直到有元素可用或超时。

bash 复制代码
BLPOP key [key ...] timeout

示例:

bash 复制代码
BLPOP mylist 10  # 等待最多10秒

12. BRPOP - 阻塞式移除并返回列表的尾部元素

BRPOP 命令用于阻塞式地移除并返回列表的尾部元素,如果列表为空,则阻塞等待直到有元素可用或超时。

bash 复制代码
BRPOP key [key ...] timeout

示例:

bash 复制代码
BRPOP mylist 10  # 等待最多10秒

13. RPOPLPUSH - 移除列表尾部的元素,并将该元素插入到另一个列表的头部

RPOPLPUSH 命令用于移除列表尾部的元素,并将该元素插入到另一个列表的头部。

bash 复制代码
RPOPLPUSH source destination

示例:

bash 复制代码
RPOPLPUSH mylist anotherlist

示例代码

下面是一个完整的示例,展示了如何使用上述常用命令操作 Redis 列表类型:

bash 复制代码
# 启动 Redis CLI
redis-cli

# 在列表头部插入元素
LPUSH mylist "World"
LPUSH mylist "Hello"

# 在列表尾部插入元素
RPUSH mylist "Redis"

# 获取列表的长度
LLEN mylist  # 输出: 3

# 获取整个列表
LRANGE mylist 0 -1  # 输出: 1) "Hello"  2) "World"  3) "Redis"

# 获取列表中指定索引的元素
LINDEX mylist 0  # 输出: "Hello"

# 设置列表中指定索引的元素
LSET mylist 0 "New Value"
LRANGE mylist 0 -1  # 输出: 1) "New Value"  2) "World"  3) "Redis"

# 移除并返回列表头部的元素
LPOP mylist  # 输出: "New Value"
LRANGE mylist 0 -1  # 输出: 1) "World"  2) "Redis"

# 移除并返回列表尾部的元素
RPOP mylist  # 输出: "Redis"
LRANGE mylist 0 -1  # 输出: 1) "World"

# 移除列表中与指定值相等的元素
LPUSH mylist "Hello"
LPUSH mylist "Hello"
LPUSH mylist "Hello"
LREM mylist 2 "Hello"
LRANGE mylist 0 -1  # 输出: 1) "Hello"  2) "World"

# 对列表进行修剪
LTRIM mylist 0 0
LRANGE mylist 0 -1  # 输出: 1) "Hello"

# 阻塞式移除并返回列表头部的元素
BLPOP mylist 10  # 如果列表为空,等待最多10秒

# 阻塞式移除并返回列表尾部的元素
BRPOP mylist 10  # 如果列表为空,等待最多10秒

# 移除列表尾部的元素,并将该元素插入到另一个列表的头部
LPUSH source "one"
LPUSH source "two"
RPOPLPUSH source destination
LRANGE source 0 -1        # 输出: 1) "two"
LRANGE destination 0 -1   # 输出: 1) "one"

注意事项

  1. 索引从 0 开始:列表中的索引从 0 开始,负数索引用于从尾部开始计数(-1 是最后一个元素)。
  2. 原子性操作:所有列表操作都是原子的,即使多个客户端同时访问同一个列表,也不会出现数据不一致的情况。
  3. 阻塞操作BLPOPBRPOP 命令是阻塞操作,适用于需要等待元素可用的场景。

总结

Redis 的列表类型命令非常丰富,支持多种操作,如插入、删除、获取、设置、修剪、阻塞等。通过这些命令,你可以对 Redis 中的列表类型数据进行灵活的操作和管理。上述示例代码涵盖了大多数常用的列表命令,帮助你快速掌握 Redis 列表类型的操作。

相关推荐
码事漫谈9 分钟前
C++高并发编程核心技能解析
后端
码事漫谈10 分钟前
C++与浏览器交织-从Chrome插件到WebAssembly,开启性能之门
后端
源代码•宸1 小时前
goframe框架签到系统项目(BITFIELD 命令详解、Redis Key 设计、goframe 框架教程、安装MySQL)
开发语言·数据库·经验分享·redis·后端·mysql·golang
⑩-1 小时前
SpringCloud-Nacos 配置中心实战
后端·spring·spring cloud
java1234_小锋2 小时前
[免费]SpringBoot+Vue勤工助学管理系统【论文+源码+SQL脚本】
spring boot·后端·mybatis·勤工助学
踏浪无痕3 小时前
从 Guava ListenableFuture 学习生产级并发调用实践
后端·面试·架构
❀͜͡傀儡师3 小时前
SpringBoot 扫码登录全流程:UUID 生成、状态轮询、授权回调详解
java·spring boot·后端
可观测性用观测云4 小时前
观测云在企业应用性能故障分析场景中的最佳实践
后端
一 乐4 小时前
酒店预约|基于springboot + vue酒店预约系统(源码+数据库+文档)
java·数据库·vue.js·spring boot·后端