链条传动

砥砺前行,不忘初心!

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

Redis提供了基于“发布/订阅”模式的消息机制,此种模式下,消息发布者和订阅者不进行直接通信, 发布者客户端向指定的频道(channel) 发布消息, 订阅该频道的每个客户端都可以收到该消息,如下图所示。

 

常用命令:

发布消息
publish channel message
示例:
127.0.0.1:6379> publish channel:sports "Tim won the championship"
(integer) 0
向channel:sports频道发布一条消息“Tim won the championship”, 返回结果为订阅者个数, 因为此时没有订阅, 所以返回结果为0。

订阅消息
subscribe channel [channel ...]
订阅者可以订阅一个或多个频道。

有关订阅命令有两点需要注意:
·客户端在执行订阅命令之后进入了订阅状态, 只能接收subscribe、psubscribe、 unsubscribe、 punsubscribe的四个命令。
·新开启的订阅客户端, 无法收到该频道之前的消息, 因为Redis不会对发布的消息进行持久化。


取消订阅
unsubscribe [channel [channel ...]]

按照模式订阅和取消订阅
psubscribe pattern [pattern...]
punsubscribe [pattern [pattern ...]]
示例:
订阅以it开头的所有频道
127.0.0.1:6379> psubscribe it*
Reading messages... (press Ctrl-C to quit)
1) "psubscribe"
2) "it*"
3) (integer) 1


查询订阅
查看活跃的频道(所谓活跃的频道是指当前频道至少有一个订阅者)
pubsub channels [pattern]
示例:
127.0.0.1:6379> pubsub channels
1) "channel:sports"
2) "channel:it"
3) "channel:travel"
127.0.0.1:6379> pubsub channels channel:*r*
1) "channel:sports"
2) "channel:travel"

查看频道订阅数
pubsub numsub [channel ...]

查看模式订阅数
pubsub numpat

 

使用场景

聊天室、 公告牌、 服务之间利用消息解耦都可以使用发布订阅模式。

 

posted on 2020-11-18 17:23  链条君  阅读(121)  评论(0)    收藏  举报