
针对 Java 后端开发中经常接触到的这三种 Redis 消息实现方式,我从设计模型、可靠性、功能特性三个维度为你总结了它们的核心区别:
特性 | Pub/Sub (发布订阅) | List (列表) | Stream (流) |
|---|---|---|---|
底层结构 | 字典 (Dict) + 链表 | 快速列表 (Quicklist) | 基数树 (Radix Tree) |
消息模型 | 广播模式 (1:N) | 点对点模式 (1:1) | 消费组模式 (N:M) |
存储方式 | 不存储 (即时转发) | 存储在 List 中 | 存储在 Stream 日志中 |
消息读取 | 被动接收 (Push) | 主动拉取 (Pull/阻塞) | 主动拉取 (Pull/消费组) |
BLPOP 阻塞拉取。这是面试中区分“高级开发”和“初级开发”的关键点:
XACK。如果消费者崩溃,消息会留在 PEL (Pending Entries List) 中,重启后可以重新处理。原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。