Redis 列表是简单的字符串列表,按照插入顺序排序,常用命令:
- LPUSH key value1 [value2...] 在列表头部插入一个或多个值
- RPUSH key value1 [value2...] 在列表尾部插入一个或多个值
- LPOP key 移除并获取列表头部第一个元素
- RPOP key 移除并获取列表尾部最后一个元素
- LRANGE key start stop 获取列表指定索引范围内的元素(0 表示第一个元素,-1 表示最后一个元素)
- LLEN key 获取列表长度
- BLPOP key [key...] timeout 从列表头部阻塞弹出元素,超时时间设置为 0 表示无限阻塞
- BRPOP key [key...] timeout 从列表尾部阻塞弹出元素,超时时间设置为 0 表示无限阻塞
- LTRIM key start stop 保留列表指定索引范围内的元素(删除范围外的元素)
关键特性说明
-
阻塞操作:BLPOP/BRPOP 常用于实现消息队列,当列表为空时线程会挂起等待新元素
# 示例:实现简单任务队列
> LPUSH tasks "task1" "task2" # 生产者推送任务
(integer) 2
> BRPOP tasks 0 # 消费者阻塞获取任务
1) "tasks"
2) "task1"
-
范围索引:LRANGE 和 LTRIM 支持负数索引(例如 LRANGE key 0 -1 表示获取全部元素)
-
原子性:所有列表操作均为原子性,适用于高并发场景
使用场景:消息队列、最新动态(如朋友圈时间线)、分页查询。