发布订阅模式
理解发布订阅模式的原理
掌握频道发布与订阅命令
了解适用场景与局限性
核心讲解
发布订阅(Pub/Sub)是消息模式,发布者发消息到频道,订阅者订阅频道就能收到消息,一对多广播。
(1)核心概念
发布者:发送消息的客户端
订阅者:接收消息的客户端
频道(Channel):消息的主题
模式匹配订阅:按模式匹配多个频道
(2)常用命令
表格
命令 | 功能 |
|---|---|
| 订阅频道,进入订阅状态 |
| 向频道发布消息 |
| 取消订阅 |
| 模式匹配订阅,比如 |
| 查看活跃频道 |
(3)特点
一对多广播,一个发布,所有订阅者都收到
消息发了就没了,不持久,不在线就丢了
没有确认机制,不知道收到没
没有消息堆积,订阅者处理慢不会等
(4)适用场景
简单广播通知
实时消息、简单聊天室
配置刷新广播
轻量级场景,复杂场景用专业 MQ
操作示例
# ===== 订阅者客户端1 =====
# 订阅news频道
SUBSCRIBE news
# 进入订阅状态,等待消息
# 发布者发消息后,会收到
# ===== 发布者客户端2 =====
# 向news频道发消息
PUBLISH news "今天发布新版本"
# 返回订阅者数量
# ===== 模式订阅 =====
# 订阅所有news.开头的频道
PSUBSCRIBE news.*
# 发布到不同子频道
PUBLISH news.it "技术更新"
PUBLISH news.sport "体育新闻"
# ===== 查看频道 =====
PUBSUB CHANNELS
常见误区
发布订阅就是消息队列:PubSub 是广播,没有队列、没有持久化、没有确认,不能当专业 MQ 用
消息不会丢:订阅者不在线,消息直接丢了,不会保存
可以堆积消息:没有堆积能力,订阅者处理慢,后面的消息直接过来,不会等
能做业务消息队列:只能做简单广播,业务可靠消息用 Kafka、RabbitMQ
课后练习
打开两个 redis-cli 客户端,一个订阅,一个发布
用模式订阅,匹配多个频道
说明 Redis 发布订阅的优缺点和适用场景
思考:发布订阅和专业 MQ 的区别是什么?

