1.什么是发布和订阅?
redis发布订阅(pub/sub)是一种新闻通信模式:发布者(pub)发布消息,订阅者(sub)接收消息。
redis客户可以订阅任何数量的频道。
2、redis发布和订阅
2.1.客户端可订阅如下图所示
2.2.在此频道发布消息后,消息将发送给订阅客户
3.实现发布和订阅的命令
3.1.打开客户端订阅channel1
订阅命令: subscribe channel1 channel2 ... ,可订阅多个频道。
3.2.打开另一个客户端,给它channel1发布消息hello
发标信息命令: publish channel 消息 ,返回值表示有几个订阅者
3.3.切换到订阅者窗口,可以看到收到的信息
4.发布和订阅常用命令
4.1、subscribe:订阅一个或多个频道
SUBSCRIBE channel [channel ...]
订阅一个或多个频道的信息。 返回值:收到的信息(见下面的代码说明)。
# 订阅 msg 和 chat_room 两个频道 # 1 - 6 行是执行 subscribe 后续反馈信息 # 第 7 - 9 行是收到的第一条信息 # 第 10 - 12 行是第二条 redis> subscribe msg chat_room Reading messages... (press Ctrl-C to quit) 1) "subscribe" # 返回值类型:显示订阅成功 2) "msg" # 频道名称的订阅 3) (integer) 1 # 目前已订阅的频道数量 1) "subscribe" 2) "chat_room" 3) (integer) 2 1) "message" # 返回值类型:信息 2) "msg" # 来源(从那个频道发送) 3) "hello moto" # 信息内容 1) "message" 2) "chat_room" 3) "testing...haha"
4.2、publish:向指定发布到指定的频道
PUBLISH channel message
将信息 message 发送到指定的频道 channel 。 返回值:收到信息 message 订阅者数量。
# 发送信息的频道没有订阅者 redis> publish bad_channel "can any body hear me?" (integer) 0 # 向订阅者频道发送信息 redis> publish msg "good morning" (integer) 1 # 向多个订阅者频道发送信息 redis> publish chat_ room "hello~ everyone" (integer) 3
4.3、psubscribe:订阅一个或多个符合给定模式的频道
PSUBSCRIBE pattern [pattern ...]
符合给定模式的一个或多个频道订阅。 每个模式以 * 例如,作为匹配符 it* 匹配所有以 it 开头的频道( it.news 、 it.blog 、it.tweets 等等), news.* 匹配所有以 news. 开头的频道( news.it 、 news.global.today 等等),诸如此类。
# 订阅 news.* 和 tweet.* 两个模式 # 第 1 - 6 行是执行 psubscribe 后续反馈信息 # 第 7 - 10 第一条信息是收到的 # 第 11 - 14 是第二条 # 以此类推。。。 redis> psubscribe news.* tweet.* Reading messages... (press Ctrl-C to quit) 1) "psubscribe" # 返回值类型:显示订阅成功 2) "news.*" # 订阅的模式 3) (integer) 1 # 目前订阅模式的数量 1) "psubscribe" 2) "tweet.*" 3) (integer) 2 1) "pmessage" # 返回值类型:信息 2) "news.*" # 信息匹配模式 3) "news.it" # 信息本身的目标频道 4) "Google buy Motorola" # 信息的内容 1) "pmessage" 2) "tweet.*" 3) "tweet.huangz" 4) "hello" 1) "pmessage" 2) "tweet.*" 3) "tweet.joe" 4) "@huangz morning" 1) "pmessage" 2) "news.*" 3) "news.life" 4) "An apple a day, keep doctors away"