Redis的发布与订阅

追求适度,才能走向成功;人在顶峰,迈步就是下坡;身在低谷,抬足既是登高;弦,绷得太紧会断;人,思虑过度会疯;水至清无鱼,人至真无友,山至高无树;适度,不是中庸,而是一种明智的生活态度。

导读:本篇文章讲解 Redis的发布与订阅,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com,来源:原文

发布订阅(pub/sub)

Redis 发布订阅(pub/sub)是一种消息通信模式:发送者(pub)发送消息,订阅者(sub)接收消息。

发送者(发布者)并不是直接发送它们的消息给指定的接收者(订阅者),而是将消息发布到特定的消息通道,并且不需要知道订阅者的任何信息。订阅者可以订阅一个或多个感兴趣的消息通道,同时也只会收到他们感兴趣通道的信息,而不用去关心是谁发布的。这种发布者与订阅者的解耦,使其具备更强的扩展性并得到一个更加动态的网络拓扑。

订阅:客户端订阅喜欢的频道。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-72b4jPVN-1586789768072)(/media/39.png)]

发布:消息发送给指定的频道,由频道发送给订阅它的客户端。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-gqJqc8XH-1586789768073)(media/40.png)]

  • 订阅频道
subscribe channel [channel ...] 

示例:订阅a、b、c频道

subscribe a b c
  • 发布消息
publish channel message

示例:给a频道发送hello

publish a hello

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-vMZrMLCb-1586789768073)(/media/41.png)]

  • 查看现有多少频道
127.0.0.1:6379> pubsub channels
1) "a"
2) "e"
3) "c"
4) "b"
127.0.0.1:6379>
  • 退订给定的频道
unsubscribe channel [channel ...]

示例:退订a频道

unsubscribe a

注意:由于redis客户端订阅操作会占用当前客户端窗口,因此执行不了任何redis命令,退订频道命令一般用于程序客户端操作使用(如Java客户端、C客户端、PHP客户端等)

  • 订阅多个符合条件的频道
psubscribe parent [parent ...]

示例:订阅所有以a开头的频道

psubscribe *a
  • 退订多个符合条件的频道
punsubscribe parent [parent ...]

示例:退订以a开头的所有频道

punsubscribe *a

案例:

client1:

127.0.0.1:6379> subscribe abc ace dev

client2:

127.0.0.1:6379> psubscribe a*

client3:

127.0.0.1:6379> publish abc "abc say hello"
(integer) 2
127.0.0.1:6379> publish ace "ace say hello"
(integer) 2
127.0.0.1:6379> publish dev "dev say hello"
(integer) 1
127.0.0.1:6379>

观测变化:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-LViquIvw-1586789768073)(media/42.png)]

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/131841.html

(0)
飞熊的头像飞熊bm

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!