简述

什么是发布/订阅模型?直接看图:

在这里插入图片描述

这个模型我们再熟悉不过了,这不就是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专题!

🍄 不来博客里瞧一瞧吗

Logo

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

更多推荐