一、命令介绍
·元素插入与弹出
·LPUSH / RPUSH:从左端或右端插入一个或多个元素。
·LPOP / RPOP:弹出列表端部元素。
·LINSERT:在指定元素前后插入新元素。
·RPOPLPUSH:原子性地从一个列表尾部弹出并推入另一个列表头部。
·元素查询与修改
·LINDEX:按下标读取指定位置的元素。
·LRANGE:按范围返回元素列表。
·LSET:按下标修改指定位置的元素值。
·LLEN:返回列表长度。
·LREM:删除指定数量的匹配元素。
·LTRIM:保留指定范围并裁剪其余元素。
·阻塞式操作(消息队列场景)
·BLPOP / BRPOP:阻塞式弹出,在列表为空时等待指定超时时间,适用于消息队列消费。
·BRPOPLPUSH:阻塞式弹出并推入另一个列表。
·高版本增强命令(Redis 6.2+ / Valkey 8.0+)
·LMOVE / BLMOVE:更灵活的元素在列表间移动(支持指定源/目标方向)。
·LPOS:查找元素在列表中的位置索引。
·LMPOP / BLMPOP(Redis 7.0+):从多个键中批量弹出元素,进一步增强 List 作为轻量级任务队列的能力。
更多信息请参见 Valkey 产品文档:List 命令组。
二、命令支持概览
·基础命令:lindex、linsert、llen、lpop、lpush、lpushx、lrange、lrem、lset、ltrim、rpop、rpoplpush、rpush、rpushx、blpop、brpop、brpoplpush,Redis 2.8 标准架构及 4.0、5.0、6.2、7.0 版本、Valkey 8.0、9.0 的标准架构与集群架构均支持。
·6.2+ 新增命令:blmove、lmove、lpos,仅 Redis 6.2、7.0 版本及 Valkey 8.0、9.0 版本支持。
·7.0+ 新增命令:lmpop、blmpop,仅 Redis 7.0 版本及 Valkey 8.0、9.0 版本支持。
·跨 Slot 限制:集群架构下,rpoplpush、blpop、brpop、brpoplpush 不支持跨 Slot 操作。
三、命令兼容性矩阵
List 族命令在各版本与架构下的支持情况如下表所示(✓ 表示支持,✗ 表示不支持,— 表示该命令不存在跨 Slot 访问场景)。
注意:说明:
注意:blpop、brpop、brpoplpush、blmove、blmpop 是带 b 前缀的命令。与去 b 前缀的普通命令(如 lpop、lmove)的区别在于:当 List 为空时,普通命令立即返回 nil,而带 b 命令会等待新元素入队,直到超时才返回。在 multi exec 事务中,带 b 命令不等待,行为等同于去 b 前缀的普通命令。详见 BLPOP 产品文档。
| 命令 | Valkey 9.0标准架构 | Valkey 9.0集群架构 | Redis 7.0/Valkey 8.0标准架构 | Redis 7.0/Valkey 8.0集群架构 | Redis 6.2标准架构 | Redis 6.2集群架构 | Redis 5.0标准架构 | Redis 5.0集群架构 | Redis 4.0标准架构 | Redis 4.0集群架构 | Redis 2.8标准架构 | 集群架构跨 Slot 支持 |
| lindex | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | — |
| linsert | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | — |
| llen | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | — |
| lpop | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | — |
| lpush | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | — |
| lpushx | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | — |
| lrange | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | — |
| lrem | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | — |
| lset | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | — |
| ltrim | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | — |
| rpop | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | — |
| rpoplpush | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✗ |
| rpush | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | — |
| rpushx | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | — |
| blpop | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✗ |
| brpop | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✗ |
| brpoplpush | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✗ |
| blmove | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✗ | ✗ | ✗ | ✗ | ✗ | — |
| lpos | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✗ | ✗ | ✗ | ✗ | ✗ | — |
| lmove | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✗ | ✗ | ✗ | ✗ | ✗ | — |
| lmpop | ✓ | ✓ | ✓ | ✓ | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | — |
| blmpop | ✓ | ✓ | ✓ | ✓ | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | — |