redis学习篇(十一)-----高级特性之发布与订阅
2016-08-11 00:00
127 查看
发布订阅(pub/sub)是一种消息通信模式,主要的目的是解除消息发布者和消息订阅者之间的耦合,Redis作为一个pub/sub的server,在订阅者和发布者之前起到了消息路由的功能。
SUBSCRIBE、UNSUBSCRIBE 和 PUBLISH 三个命令实现了发布与订阅信息泛型(Publish/Subscribe messaging paradigm), 在这个实现中, 发送者(发送信息的客户端)不是将信息直接发送给特定的接收者(接收信息的客户端),而是将信息发送给频道(channel),然后由频道将信息转发给所有对这个频道感兴趣的订阅者。发送者无须知道任何关于订阅者的信息,而订阅者也无须知道是那个客户端给它发送信息,它只要关注自己感兴趣的频道,以达到解耦合的目的。
订阅/发布的相关指令
SUBSCRIBE、UNSUBSCRIBE 和 PUBLISH 三个命令实现了发布与订阅信息泛型(Publish/Subscribe messaging paradigm), 在这个实现中, 发送者(发送信息的客户端)不是将信息直接发送给特定的接收者(接收信息的客户端),而是将信息发送给频道(channel),然后由频道将信息转发给所有对这个频道感兴趣的订阅者。发送者无须知道任何关于订阅者的信息,而订阅者也无须知道是那个客户端给它发送信息,它只要关注自己感兴趣的频道,以达到解耦合的目的。
订阅/发布的相关指令
--subscribe channel [channel] -- 订阅一个或多个频道 127.0.0.1:6379> subscribe channel1 channel2 Reading messages... (press Ctrl-C to quit) 1) "subscribe" #返回类型:订阅成功 2) "channel1" #订阅的频道名称 3) (integer) 1 #当前客户端订阅的频道数 1) "subscribe" 2) "channel2" 3) (integer) 2 --publish channel message -- 给指定频道发送消息 publish的客户端中 127.0.0.1:6379> publish channel1 'hello world' (integer) 1 #返回当前收听到消息的客户端数 接受的客户端中 127.0.0.1:6379> subscribe channel1 channel1 Reading messages... (press Ctrl-C to quit) 1) "subscribe" 2) "channel1" 3) (integer) 1 1) "subscribe" 2) "channel1" 3) (integer) 1 1) "message" #接受类型:消息 2) "channel1" #来源:来自 channel1 频道 3) "hello world" #消息内容 --psubscribe pattern [pateern] -- 订阅指定模式下的频道 127.0.0.1:6379> psubscribe channel* test* Reading messages... (press Ctrl-C to quit) 1) "psubscribe" #返回类型:psubscribe订阅成功 2) "channel*" #订阅的频道模式 3) (integer) 1 #当前订阅频道模式数 1) "psubscribe" 2) "test*" 3) (integer) 2 当psubscribe接收到消息的时候,返回值的类型也不同 1) "pmessage" #接收消息:pmessage 2) "channel*" #匹配频道模式:channel* 3) "channel1" #来自频道:channel1 4) "hello psubscribe" #消息内容 --unsubscribe [channel] [channel1] -- 取消频道的订阅,如果不带参数,则取消当前客户端所有频道的订阅。 --pubsub subcommand [argument] -- 根据不同的subcommand返回不同的结果 ## pubsub channels [pattern] 列出当前的活跃频道。活跃频道指的是那些至少有一个订阅者的频道,订阅模式的客户端不计算在内。 pattern 参数是可选的: 如果不给出 pattern 参数,那么列出订阅与发布系统中的所有活跃频道。 如果给出 pattern 参数,那么只列出和给定模式 pattern 相匹配的那些活跃频道。 ## pubsub numsub [channel1] [channel2] 返回给定频道的订阅者数量,psubscribe的客户端不计算在内。当没有channel参数时,返回空。 # client-1 订阅 it 和 sport 两个频道 client-1> SUBSCRIBE it sport Reading messages... (press Ctrl-C to quit) 1) "subscribe" 2) "it" 3) (integer) 1 1) "subscribe" 2) "sport" 3) (integer) 2 # client-2 订阅 it 和 life 两个频道 client-2> SUBSCRIBE it life Reading messages... (press Ctrl-C to quit) 1) "subscribe" 2) "it" 3) (integer) 1 1) "subscribe" 2) "life" 3) (integer) 2 # client-3 打印各个频道的订阅者数量 client-3> PUBSUB NUMSUB it life sport music 1) "it" # 频道 2) "2" # 订阅该频道的客户端数量 3) "life" 4) "1" 5) "sport" 6) "1" 7) "music" # 没有任何订阅者 8) "0" ## pubsub numpat 返回psubscribe模式的数量。返回的不是订阅模式的客户端的数量,而是客户端订阅的所有模式的数量总和。需要注意的是,这里 返回的结果是订阅次数(类似人次),比如客户端1订阅了AB,客户端2订阅了BC,这里返回的是4 # client-1 订阅了 new.* 和 it.* 模式 1client-1> psubscribe new.* it.* Reading messages... (press Ctrl-C to quit) 1) "psubscribe" 2) "new.*" 3) (integer) 1 1) "psubscribe" 2) "it.*" 3) (integer) 2 # client-2 订阅了 it.* 和 life.* 模式 1client-1> psubscribe life.* it.* Reading messages... (press Ctrl-C to quit) 1) "psubscribe" 2) "life.*" 3) (integer) 1 1) "psubscribe" 2) "it.*" 3) (integer) 2 # client-3打印 pubsub numpat client-3> pubsub numpat (integer) 4
相关文章推荐
- Redis高级实用特性(持久化机制、发布订阅消息、虚拟内存的使用)
- Redis的高级实用特性——发布及订阅消息
- Redis实战《红丸出品》4.5 Redis高级实用特性之发布及订阅消息
- Redis高级实用特性:发布及订阅消息
- Redis的高级实用特性——发布及订阅消息
- 十一、观察者模式(发布-订阅模式)Observer
- MQTT的学习研究(十一) IBM MQTT 简单发布订阅实例
- Redis的发布订阅(十一)
- redis-高级(事务,频道发布,消息订阅,持久化,主从复制,运维监控....)
- NoSQL之Redis高级应用--发布及订阅消息
- Redis系列~发布订阅(十一)
- Redis学习篇(十一)之发布订阅
- (十一)redis 发布与订阅(pub/sub)
- JavaSE复习之十一 高级特性:反射和注释
- redis 高级应用之二(Redis的持久化 和 消息的[pub/sub]发布和订阅)
- Redis的高级应用-事务处理、持久化、发布与订阅消息、虚拟内存使用
- ZMQ 第五章 高级发布-订阅模式
- redis学习篇(九)-----高级特性之事务处理
- JavaSE复习之十一 高级特性:反射和注释
- JavaSE复习之十一 高级特性:反射和注释 补充(1)