Redis 列表(List)
List 是双端队列,做最新列表与简单消息队列。
Key PointsLPUSH+LPOP 是栈,LPUSH+RPOP 是队列;BRPOP 阻塞等待,适合轻量队列。
入队与出队
Shell
LPUSH tasks "t1" "t2" # 从左入队
RPUSH tasks "t3" # 从右入队
LRANGE tasks 0 -1 # 查看全部(左→右)
LPOP tasks # 从左弹出
RPOP tasks # 从右弹出
LLEN tasks # 长度Output
1) "t2"
2) "t1"
3) "t3"阻塞队列
Shell
# 消费者:没有就阻塞等待(最多 0 表示不限时)
BRPOP tasks 0Output
1) "tasks"
2) "t3"A List queue has no ack/redelivery — a popped message is gone, lost if the consumer crashes. For reliable messaging use Stream or a real MQ. Lists fit 'ok to occasionally lose' cases.
入队与出队
Shell
LPUSH tasks "t1" "t2" # 从左入队
RPUSH tasks "t3" # 从右入队
LRANGE tasks 0 -1 # 查看全部(左→右)
LPOP tasks # 从左弹出
RPOP tasks # 从右弹出
LLEN tasks # 长度Output
1) "t2"
2) "t1"
3) "t3"阻塞队列
Shell
# 消费者:没有就阻塞等待(最多 0 表示不限时)
BRPOP tasks 0Output
1) "tasks"
2) "t3"List 做队列没有「确认/重投」机制,消息弹出即消失,消费者崩了就丢。要可靠消息队列用 Stream 或专门的 MQ(RabbitMQ/Kafka)。List 适合「允许少量丢失」的场景。