Redis学习笔记 ——(10)发布订阅
Redis提供了基于“发布/订阅”模式的消息机制,在此种模式下,消息发布者订阅者不进行直接通信,发布者客户端向指定的频道(channel)发布消息,订阅该频道的每个客户端都可以收到该消息,如下图。
命令
Redis主要提供了发布消息、订阅频道、取消订阅、按照模式订阅等命令。
发布消息
127.0.0.1:6379> publish channel message
(integer) 0
127.0.0.1:6379> publish channel:msg "they are good friends"
(integer) 0
订阅消息
subscribe channel [CHANNEL …]
订阅者可以订阅一个或者多个频道,下面操作是当前客户端订阅了channel:msg
左边订阅了之后就是一个阻塞状态,当左边的发送端 进行消息的发送,右边就会推送新的内容。
127.0.0.1:6379> subscribe channel:msg
Reading messages... (press Ctrl-C to quit)
1) "subscribe"
2) "channel:msg"
3) (integer) 1
1) "message"
2) "channel:msg"
3) "here is a message"
需要注意的是,客户端再执行订阅命令之后就进入了订阅状态,只能接受subscribe、psubscribe、unsubscribe、punsubscribe的四个命令,新开启的订阅客户端没有办法接受到之前的信息,因此Redis不会对发布的消息进行持久化。
取消订阅
unsubscribe channge [channel …]
unsubscribe channge:msg
查看订阅
- 查看活跃的频道
pubsub channels - 查看频道订阅数
pubsub numsub [channel]
127.0.0.1:6379> pubsub numsub channel:msg
1) "channel:msg"
2) (integer) 1
使用场景
聊天室、公告牌、服务之间利用消息解耦都可以使用发布订阅模式,例如大家都在一个群里,当加入群聊的时候,所有人都订阅了这个频道,同时每个人在发消息的时候又作为发布者发到了频道当中,所有人可以收到消息。