Redis Pub与Sub 与 Streams 的适用边界
WebSocket、消息队列与实时通信#Python全栈#第十六阶段#WebSocket、消息队列与实时通信#Redis Pub与Sub 与 Streams 的适用边界约 907 字 · 3 分钟阅读
追问显示点击任意追问卡片可收起 / 展开
Redis Pub/Sub 怎样发布与订阅事件?
追问 频道订阅与模式订阅适合怎样的通知范围?为什么订阅连接需要专门管理,关闭和重新订阅应怎样处理?
Redis Pub/Sub 订阅者离线时,会发生什么?
追问 为什么频道本身不能提供离线历史和消费确认?在线提醒与必须可查的站内通知应怎样分别保存和发送?
多个 WebSocket 实例怎样通过 Pub/Sub 完成跨实例广播?
追问 每个实例收到事件后如何筛选本地连接?广播来源实例怎样避免重复发送,租户与房间权限如何保持隔离?
Redis Streams 与 Pub/Sub 在保留、读取和消费状态上有什么区别?
追问 什么场景需要读取历史或恢复未完成工作?为什么使用 Streams 后仍要核对持久化、容量和故障切换条件?
XADD 产生的 Stream ID 应怎样使用?
追问 同一 Stream 的位置标识与业务 event_id 有什么区别?为什么不能用它直接证明跨 Stream 全局顺序或客户端事件发生时间?
XREAD 与 XREADGROUP 分别适合什么读取模式?
追问 独立历史读取和消费组内分工怎样选择?组的起始位置决定什么,两个需要独立处理全部事件的服务应怎样划分组?
消费组中的 Pending Entries List 与 XACK 怎样配合?
追问 已投递但未确认的消息在哪里观察?读取成功是否代表处理成功,XACK 是否等于删除 Stream 中的消息正文?
消费者退出后,怎样恢复它尚未确认的 Stream 消息?
追问 读取自身 Pending 与认领其他消费者 Pending 有何区别?XPENDING、XCLAIM 或 XAUTOCLAIM 怎样配合,空闲阈值过短为什么可能重复执行?
Stream 裁剪策略怎样影响历史与消费恢复?
追问 MAXLEN、时间范围和慢消费者怎样协调?所用版本与裁剪策略是否保护 Pending 正文,正文已被删除时如何发现并补偿?
消费组内并行处理,能否自动保证业务按顺序完成?
追问 同一对象的两个事件由不同消费者处理时会怎样?怎样在吞吐、分组串行、版本检查与幂等之间选择?
Redis 核对资料: Pub/Sub、XREADGROUP、XACK、XAUTOCLAIM。课堂使用核心命令,不以新版本新增参数作为基础必考内容。