redis-发布订阅

订阅命令

SUBSCRIBE channel[channel …]

channel:订阅的渠道,可以使用SUBSCRIBE 订阅多个渠道

SUBSCRIBE 命令执行后,表明当前线程时入订阅状态,只能接收服务端发来的订阅信息,或执行订阅相关的命令,如取消订阅。

 SUBSCRIBE 命令执行后,接收到的信息类型:

1.SUBSCRIBE channel  subscribeChannelNum 

             SUBSCRIBE 命令执行后立即返回的信息:

                      Subscribe  :表明订阅信息类型,

                      channel  :表明订阅的渠道

                      subscribeChannelNum :当前客户端订阅的渠道数据(即 SUBSCRIBE 命令中channel的数量

2.MESSAGE channel  content 

                     当服务端渠道上有消息发布时,当前订阅线程获取信息

                  MESSAGE :表明为收到消息类型

                 channel  :收到消息的渠道

                  content :收到消息的内容

3. UNSUBSCRIBE channel  subscribeChannelNum 

                   当前订阅线程取消了对某个渠道的订阅

                  UNSUBSCRIBE :表明取消渠道订阅类型

                  channel  :取消的订阅渠道

                   subscribeChannelNum :当前订阅线程还在订阅几个渠道,当订阅渠道数为0时,退出订阅状态。

发布命令

PUBLISH channel message

 向某个渠道发送消息

        channel :渠道名称

          message:消息类型

 PUBLISH 命令执行后,立即返回,返回值表示接收到这条消息的订阅者数量。 Redis不会持久化消息,因此订阅端的不能接收到订阅开始时间之间该渠道上发布过的消息。

取消订阅:

 UNSUBSCRIBE channel [channel ...] 

  在订阅状态下执行 UNSUBSCRIBE ,可以取消一个或多个渠道的订阅

localhost:6379> subscribe commandChannel reloadChannel
Reading messages... (press Ctrl-C to quit)
1) "subscribe"
2) "commandChannel"
3) (integer) 1
1) "subscribe"
2) "reloadChannel"
3) (integer) 2
1) "message"
2) "commandChannel"
3) "ftpget"
1) "message"
2) "commandChannel"
3) "mkdir"
1) "message"
2) "reloadChannel"
3) "appid:345"

 

        在另一个redis客户端执行:

localhost:6379> publish commandChannel ftpget
(integer) 1
localhost:6379> publish commandChannel mkdir
(integer) 1
localhost:6379> publish reloadChannel appid:345
(integer) 1

 

猜你喜欢

转载自java12345678.iteye.com/blog/2165101