【Redis】发布/订阅
简述什么是发布/订阅模型?直接看图:这个模型我们再熟悉不过了,这不就是MQ的模型吗?Channel不就是MQ中的主题吗?Redis发布/订阅模型是对范式极其简单的实现——生产者和消费者均是Redis客户端(client),通道为Redis服务端(server),它们共同组成了这个与 MQ主题模式 极其类似的发布/订阅模型。 演示▶ 消费者(订阅消息)127.0.0.1:637
简述
什么是发布/订阅模型?直接看图:
这个模型我们再熟悉不过了,这不就是MQ的模型吗?Channel不就是MQ中的主题吗?
Redis发布/订阅模型是对范式极其简单的实现——生产者和消费者均是Redis客户端(client),通道为Redis服务端(server),它们共同组成了这个与 MQ主题模式 极其类似的发布/订阅模型。
演示
▶ 消费者(订阅消息)
127.0.0.1:6379> subscribe channel666
Reading messages... (press Ctrl-C to quit)
1) "subscribe"
2) "channel666"
3) (integer) 1
▶ 生产者(发布消息)
127.0.0.1:6379> publish channel666 "hello!!!"
(integer) 0
既然和MQ的匹配模式一样,那自然可以支持 通配符 !
▶ 消费者(订阅消息)
127.0.0.1:6379> psubscribe *.apple.*
Reading messages... (press Ctrl-C to quit)
1) "psubscribe"
2) "*.apple.*"
3) (integer) 1
▶ 生产者(发布消息)
127.0.0.1:6379> publish orange.apple.banana "hello!!!"
(integer) 1
命令
命令 | 含义 |
---|---|
subscribe | 订阅消息(普通模式) |
psubscribe | 订阅消息(主题模式) |
publish | 发布消息 |
unsubscribe | 退订消息(普通模式) |
punsubscribe | 退订消息(主题模式) |
底层
redis-server中维护了一个字典。字典的key即为channel,字典的value即为redis-client链表。
看图很好理解:生产者绑定一个key,这个key挂着对应的所有消费者。
对比
(1)消息协议。MQ产品支持AMQP协议或JMS规范,但Redis没有对这些协议或规范的支持。
(2)保障机制。MQ产品有许多保障机制,但Redis发的消息,如果传输时出了问题,消息就没了。
☘️ 玩转Redis专题!

GitCode 天启AI是一款由 GitCode 团队打造的智能助手,基于先进的LLM(大语言模型)与多智能体 Agent 技术构建,致力于为用户提供高效、智能、多模态的创作与开发支持。它不仅支持自然语言对话,还具备处理文件、生成 PPT、撰写分析报告、开发 Web 应用等多项能力,真正做到“一句话,让 Al帮你完成复杂任务”。
更多推荐
所有评论(0)