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

Redis之发布订阅

 

常用命令:

发布消息
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

 

使用场景

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

 

相关文章:

  • 2018-08-08
  • 2018-08-18
  • 2021-04-14
  • 2021-07-23
  • 2021-08-09
猜你喜欢
  • 2022-01-30
  • 2022-12-23
  • 2022-03-06
  • 2022-01-06
  • 2021-07-06
相关资源
相似解决方案