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 表示获取全部元素)
原子性:所有列表操作均为原子性,适用于高并发场景
使用场景:消息队列、最新动态(如朋友圈时间线)、分页查询。