全部学科
Python全栈
python
NodeJS全栈
nodejs
小程序首页
📅 2026-05-12 6 分钟 ✍️ juanwangdev

Redis列表命令

列表(List)是有序的字符串集合,支持从两端插入和弹出,适合实现队列、栈等结构。

LPUSH/RPUSH插入元素

左端插入

Bash
# 从左侧插入元素(头部)
LPUSH mylist "a"
LPUSH mylist "b" "c"

# 列表内容: ["c", "b", "a"]

右端插入

Bash
# 从右侧插入元素(尾部)
RPUSH mylist "d" "e"

# 列表内容: ["c", "b", "a", "d", "e"]

条件插入

Bash
# 仅当列表存在时插入
LPUSHX mylist "f"  # 成功
LPUSHX notexist "g"  # 失败,返回0

RPUSHX mylist "g"  # 成功

LPOP/RPOP弹出元素

左端弹出

Bash
# 从左侧弹出元素
LPOP mylist
# 返回: "c"

# 弹出多个元素(Redis 6.2+)
LPOP mylist 2
# 返回: "b", "a"

右端弹出

Bash
# 从右侧弹出元素
RPOP mylist
# 返回: "e"

LRANGE获取范围元素

基本语法

Bash
LRANGE key start stop

使用示例

Bash
RPUSH numbers 1 2 3 4 5

# 获取全部元素
LRANGE numbers 0 -1
# 返回: ["1", "2", "3", "4", "5"]

# 获取前3个元素
LRANGE numbers 0 2
# 返回: ["1", "2", "3"]

# 获取最后2个元素
LRANGE numbers -2 -1
# 返回: ["4", "5"]

-1表示最后一个元素,-2表示倒数第二个。

LLEN获取列表长度

基本语法

Bash
LLEN key

使用示例

Bash
LLEN numbers
# 返回: 5

# 不存在的列表
LLEN notexist
# 返回: 0

LINDEX获取指定位置元素

基本语法

Bash
LINDEX key index

使用示例

Bash
# 获取索引0的元素(第一个)
LINDEX numbers 0
# 返回: "1"

# 获取索引-1的元素(最后一个)
LINDEX numbers -1
# 返回: "5"

# 索引超出范围
LINDEX numbers 10
# 返回: (nil)

LSET设置指定位置元素

基本语法

Bash
LSET key index value

使用示例

Bash
# 设置索引0的值
LSET numbers 0 "one"

# 设置最后一个元素
LSET numbers -1 "five"

索引超出范围会报错。

LINSERT插入元素

基本语法

Bash
LINSERT key BEFORE|AFTER pivot value

使用示例

Bash
# 在"3"之前插入
LINSERT numbers BEFORE "3" "2.5"

# 在"3"之后插入
LINSERT numbers AFTER "3" "3.5"

LREM删除元素

基本语法

Bash
LREM key count value

使用示例

Bash
RPUSH mylist "a" "b" "a" "c" "a"

# count > 0: 从头开始删除count个
LREM mylist 2 "a"
# 删除前2个"a",剩余: ["b", "c", "a"]

# count < 0: 从尾开始删除count个
LREM mylist -1 "a"
# 删除最后1个"a"

# count = 0: 删除所有
LREM mylist 0 "a"
# 删除所有"a"

BLPOP/BRPOP阻塞弹出

基本语法

Bash
BLPOP key [key ...] timeout
BRPOP key [key ...] timeout

使用示例

Bash
# 阻塞等待左端弹出,超时10秒
BLPOP myqueue 10

# 同时监听多个列表
BLPOP queue1 queue2 5

# 无限等待
BLPOP myqueue 0

BLPOP常用于实现消息队列消费者。

RPOPLPUSH移动元素

基本语法

Bash
RPOPLPUSH source destination

使用示例

Bash
# 将source尾部元素移动到destination头部
RPOPLPUSH queue1 queue2

# 阻塞版本
BRPOPLPUSH queue1 queue2 10

RPOPLPUSH可实现可靠队列,处理失败后元素在备份队列。

常用命令速查表

命令说明示例
LPUSH左端插入LPUSH k v
RPUSH右端插入RPUSH k v
LPOP左端弹出LPOP k
RPOP右端弹出RPOP k
LRANGE获取范围LRANGE k 0 -1
LLEN获取长度LLEN k
LINDEX获取指定位置LINDEX k 0
LSET设置指定位置LSET k 0 v
LINSERT插入元素LINSERT k BEFORE p v
LREM删除元素LREM k 2 v
BLPOP阻塞左弹BLPOP k 10
BRPOP阻塞右弹BRPOP k 10
RPOPLPUSH移动元素RPOPLPUSH src dest

要点总结

  • 列表是双向链表,两端操作都是O(1)
  • LPUSH/RPUSH从头部/尾部插入,LPOP/RPOP从头部/尾部弹出
  • LRANGE 0 -1获取全部元素,支持负索引
  • LREM count>0从头删,count<0从尾删,count=0删全部
  • BLPOP/BRPOP阻塞弹出,实现消息队列消费者
  • RPOPLPUSH实现可靠队列,元素移动到备份队列
  • LINDEX/LSET操作中间元素效率较低O(N),尽量避免

📝 发现内容有误?点击此处直接编辑

← 上一篇 Redis 简介与安装
下一篇 → Redis哈希命令
想查看更多题目和详细解析?
小程序提供完整的题库、模拟考试和详细解析
马上就来

长按或扫描二维码,立即体验

扫码体验小程序
马上就来
使用微信扫描二维码
立即体验完整题库