对比
| 方案 | 持久化 | ACK/重试 | 投递模型 |
|---|---|---|---|
| List | 有(元素在内存) | 无 | 竞争消费(一条被一个消费者取走) |
| Pub/Sub | 无 | 无 | 广播(在线订阅者都收到) |
| Streams | 有 | 有(PEL + CLAIM) | 消费组分片 + 可回溯 |
三种写法
三种写法
LPUSH jobs job1 && BRPOP jobs 30 # List
PUBLISH notify "deploy done" # Pub/Sub
XADD orders * id 1 # Streams
XREADGROUP GROUP g1 c1 COUNT 10 STREAMS orders >| 简单任务 | List 够用(能接受丢消息) |
|---|---|
| 实时通知 | Pub/Sub(丢了没关系) |
| 可靠消费 | Streams(要 ACK/重试/积压监控) |
| 混合 | Pub/Sub 通知 + Streams 兜底 |
List 想要「不丢」要用 RPOPLPUSH/ BRPOPLPUSH 做可靠队列(处理完再 LREM 备份队列),复杂度接近自己造 Streams。