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 列表类型的操作。

相关推荐
小钻风33663 分钟前
Spring Boot WebSocket 两种集成方式深度解析
spring boot·后端·websocket
IT_陈寒10 分钟前
Vite热更新失效?我在这坑里卡了一下午
前端·人工智能·后端
云烟成雨TD17 分钟前
Spring AI Alibaba 1.x 系列【55】Interrupts 中断机制:静态中断源码分析
人工智能·后端·spring
我命由我123451 小时前
PHP - PHP 基本随机数生成函数
开发语言·ide·后端·java-ee·php·intellij-idea·intellij idea
楼田莉子1 小时前
C#学习之C#入门学习
开发语言·后端·学习·c#
海上彼尚1 小时前
Nodejs也能写Agent - 6.基础篇 - Agent
前端·人工智能·后端·node.js
字节高级特工1 小时前
C++11(一) 革新:右值引用与移动语义
java·开发语言·c++·人工智能·后端
青云计划1 小时前
Synchronized 锁升级:从偏向锁到重量级锁的性能进化之路
java·后端
candyTong11 小时前
Claude Code 的 Edit 工具是怎么工作的
javascript·后端·架构
GetcharZp12 小时前
GitHub 2.4 万 Star!D2 正在重新定义程序员画图方式
后端