← [ BACK_TO_NOTES ]

Redis Streams

Redis Streams 是带 Entry ID、历史记录、Consumer Group、Pending 与 ACK 的日志型数据结构,适合需要消费进度和重试语义的轻量事件或任务流。

#concept #growing #backend #architecture #redis

[!info] related notes

Redis Streams

一句话定义

Redis Streams 是 Redis 的 append-only 日志型数据结构,可保留 Entry ID 与历史,并通过 Consumer Group、Pending Entries、ACK/Claim 支持有消费进度的事件或任务处理。

核心命令

XADD
XREAD / XREADGROUP
XGROUP CREATE
XACK
XPENDING
XCLAIM / XAUTOCLAIM
XTRIM

Consumer Group

Stream
→ Consumer Group
   ├─ consumer-a
   ├─ consumer-b
   └─ consumer-c

同一 group 中消息可分配给不同 consumer,未 ACK 的消息进入 Pending Entries List。

ACK 不等于 Exactly-once

典型失败:

worker receives message
→ external side effect succeeds
→ worker crashes before XACK
→ message is delivered/reclaimed again

因此上层仍需:

  • idempotency;
  • duplicate handling;
  • retry policy;
  • poison message policy;
  • side-effect boundary。

Pub/Sub vs Streams

Pub/SubStreams
历史普通订阅者离线即错过可保留
Consumer Group无有
Pending / ACK无有
典型用途实时通知 / wakeup轻量任务流 / retained events

BodySense 边界

BodySense 当前 PostgreSQL JobRuntime 已经拥有 durable Job、attempt、idempotency、legal transition、recovery sweep 等能力。因此学习 Streams 不等于应该迁移 Job authority。

更低风险的增量是:

Postgres job commit
→ Redis wakeup / optional stream signal
→ worker wakes
→ Postgres ClaimPending remains authoritative
创建于 2026/9/18 更新于 2026/9/18
Digital Biome
Access

键盘导航

j / k / ↑ / ↓
选择对象
Enter / o
打开选择
/ 或 Ctrl+K
全站搜索
i / f / 1–4
筛选当前列表
g → h / l / p / t / a
首页 / 笔记 / 项目 / 工具 / About
r → 1–9
打开所选对象的关联
u
返回上一页
Esc
关闭浮层 / 取消命令;输入框内清空文本