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
使用场景
聊天室、 公告牌、 服务之间利用消息解耦都可以使用发布订阅模式。