全书目录

第九篇:Redis 完全指南 —— 软件城市实时调度中心宇宙

第十三章:Streams —— 真正的事件流水总线

1 分钟 403 字 第 216 / 962 个阅读单元

如果 Pub/Sub 是广播电台,那 Streams 更像事件流水总线

Redis 官方文档对 Streams 的定义非常清楚:

Stream 像一个 append-only log,但又比普通追加日志更强,支持随机访问、消费组等能力。

最基础写法:

bash
XADD stream:orders * orderId 9001 status created
XRANGE stream:orders - +

消费者读取:

bash
XREAD COUNT 10 STREAMS stream:orders 0

消费组:

bash
XGROUP CREATE stream:orders order-workers 0
XREADGROUP GROUP order-workers worker-1 COUNT 10 STREAMS stream:orders >
XACK stream:orders order-workers 1719999999999-0
#Streams 和 Pub/Sub 的核心差别
text
Pub/Sub
├── 像广播
├── 只管当前在线订阅者
└── 消息过去就过去了

Streams
├── 像事件流水账
├── 消息会留在流里
├── 可以回放
├── 可以消费组分工
└── 可以 ack

这就是为什么 Redis 官方文档明确说:

  • Pub/Sub 是 at-most-once
  • Streams 支持更强的处理语义
#Redis 8.2 在线程流上的变化

官方 Redis 8.2 文档特别提到:

  • XDELEX
  • XACKDEL
  • XADD / XTRIM 的增强

它们的目标就是:让 Stream 和多个 consumer group 的协作更细、更稳。

所以到了今天,Streams 已经不是“Redis 顺手做了个队列”,而是一条越来越像真正事件流系统的能力线。