"Redis-Streams"
- Queue 緩衝
在 ingestion 和 processing 之間加 message queue 做 burst 緩衝 — Kafka / NATS / Redis Streams 的選型和引入條件
- Redis Streams → Kafka:從 embedded stream 長成 dedicated event streaming
Redis Streams 是 Redis 生態內的 append-only log data structure、Kafka 是專用 distributed event streaming platform;這趟遷移是 paradigm shift — 從 RAM-bound 單 stream key 換成 partition + log retention 的多節點系統。本文先用 Arcjet 反向案例點明多數中小規模 Redis Streams 就夠、不該為流行遷 Kafka、再講真的該遷的訊號(retention 超出 RAM 成本 / 長期 replay / consumer group 規模超出單 Redis)、XADD/XREADGROUP/XACK/MAXLEN/XCLAIM 的對位、retention 成本翻轉與 PEL→offset 誤用的故障演練、漸進 cutover
- Redis Streams XCLAIM / PEL 失敗接管與 Cluster 影響
Redis Streams 把可靠性責任放在 application 層:PEL 記錄已投遞未 ack 的訊息、XCLAIM / XAUTOCLAIM 是 consumer crash 後唯一的接管機制。本文用實機輸出走 PEL / XACK / XCLAIM / XAUTOCLAIM / min-idle-time 機制、5 個故障演練(PEL 卡死、搶單、MAXLEN 修掉未 ack 訊息、Cluster 單 shard 限制、failover 後 PEL 狀態),跟 MAXLEN / XTRIM retention 取捨。
- 3.C42 Bitso:Reliable Redis Streams 抽象 + 自建 DLQ
Bitso 加密交易所、千 msg/sec/stream + 亞毫秒延遲、自建 Reliable Streams 封裝 PEL + retry + DLQ、idempotent processing。
- 3.C43 Arcjet:Redis Streams 取代 Kafka 省 6 位數 $
Arcjet security 平台、Kafka managed 6 位數 $/yr、用 Redis Streams 約 $1k/yr、自寫 Janitor 監控 retention。
- 3.C44 Harness:CD 微服務 async state transfer
Harness CD 平台用 Redis Streams 解 brittle HTTP、揭露監控缺口 / MAXLEN truncation / head-of-line blocking 三類問題。
- 3.C45 Klaxit:Rust + Redis Streams 處理 Heroku Logplex
Klaxit carpool 用 Redis Streams 處理 Heroku Logplex 匯流、自動偵測修復平台 perf 問題、6 個月 production Rust。
- 3.C46 Learning.com:Redis 事件源退場(反例)
Learning.com 把 microservice event store 放 Redis、1 年累積 GB/週、AOF+EBS 變 latency 痛點、退到 PostgreSQL。
- 3.C47 PHP 微服務:Redis Streams + S3 hybrid storage
PHP 雙微服務通訊、Kafka 在 PHP 生態工具薄弱、用 Redis Streams + payload compression + S3 hybrid 處理大訊息。