数据库与缓存redis-发布与订阅机制-1
这篇笔记聚焦 Redis Pub/Sub 的发布订阅机制,核心定位是低延迟广播而非队列消费:发布者把消息写入 Channel,Redis 通过 SUBSCRIBE、PSUBSCRIBE 建立的订阅关系,将消息推送给所有当前在线的订阅连接。正文用 live_room:123 这类房间频道说明了订阅、发布、接收、取消订阅以及 PUBSUB 查询命令的基本用法,并给出 FastAPI 多进程房间广播示例:各节点订阅 live_room:*,收到消息后解析频道中的房间号,再调用本地 WebSocket 广播函数。文章特别强调每个订阅者在 Redis 端都是独立 TCP 长连接,发布时 Redis 执行 Fan-out,遍历同一频道下所有活跃连接并各发送一份完整消息,因此它不是“谁抢到谁处理”的负载均衡模型。需要注意的是,Pub/Sub 不持久化消息,也没有 ACK、重试、死信队列或回放能力,订阅连接断开、阻塞或不可读时就可能丢失该连接上的消息。文末将它与 RabbitMQ/Kafka 的队列、Topic 和消费者组机制对比,给出选型边界:在线聊天、游戏广播、房间通知等可容忍丢失的中小规模实时场景适合 Redis Pub/Sub;若要求可靠投递、复杂路由、审计回溯或海量吞吐,则应使用专业 MQ。
