【Redis发布订阅】

Redis通过PUBLISHSUBSCRIBE等命令实现发布与订阅模式。
![在这里插入图片描述]( https://img-blog.csdnimg.cn/20181205195637666.png?x-oss-process=image/watermark ,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQxOTY0NDI1,size_16,color_FFFFFF,t_70)
![在这里插入图片描述]( https://img-blog.csdnimg.cn/20181205195706636.png?x-oss-process=image/watermark ,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQxOTY0NDI1,size_16,color_FFFFFF,t_70)
举例:QQ群的公告,单个发布者,多个收听着。


发布/订阅

PUBLISH 频道 消息
将消息发布到指定的频道。
.
SUBSCRIBE 频道1 [频道2] [...]
可同时订阅多个频道。
.
UNSUBSCRIBE 频道1 [频道2]
取消订阅指定的频道,如果不指定频道则会取消订阅所有频道。
.
PSUBSCRIBE [匹配模式1] [匹配模式2]
订阅一个或多个符合给定模式的频道,每个模式以"*"作为匹配符,例如"re*"见匹配所有以"re"开头的频道。
news.*匹配所有以news.开头的频道(news.it 、 news.global.today 等等),诸如此类。
.
PUNSUBSCRIBE [匹配模式1] [匹配模式2]
退订指定的规则的频道,如果未指定参数,则退订所有规则的频道。
.
PUBSUB subcommand [argument [argument ...]]
查看订阅与发布系统状态。
.
注意:
使用发布订阅模式实现的消息队列,当有客户端订阅频道后,只能接收到后续发布到该频道的消息。
之前发送的不会缓存,必须Provider和Consumer同时在线。


下面将以SUBSCRIBEPUBLISH举例:
.
启动两个窗口,进入redis-cli客户端,并订阅频道,如下图:
![在这里插入图片描述]( https://img-blog.csdnimg.cn/20181205201828714.png?x-oss-process=image/watermark ,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQxOTY0NDI1,size_16,color_FFFFFF,t_70)
![在这里插入图片描述]( https://img-blog.csdnimg.cn/20181205201852253.png?x-oss-process=image/watermark ,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQxOTY0NDI1,size_16,color_FFFFFF,t_70)
在启动一个新窗口进入redis-cli客户端,开始请频道channel发布消息:
![在这里插入图片描述]( https://img-blog.csdnimg.cn/20181205202227335.png?x-oss-process=image/watermark ,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQxOTY0NDI1,size_16,color_FFFFFF,t_70)
此时,切回订阅者窗口,即可看到其发布的"PONG"消息。
需要注意的是,如果发送中文,则显示的二进制。



posted @ 2018-12-25 21:26  无名大侠01  阅读(174)  评论(0)    收藏  举报