Redis发布与发布功能(Pub/Sub)是基于事件作为基本的通信机制,是目前应用比较普遍的通信模型,它的目的主要是解除消息的发布者与订阅者之间的耦合关系。

      Redis作为消息发布和订阅之间的服务器,起到桥梁的作用,在Redis里面有一个channel的概念,也就是频道,发布者通过指定发布到某个频道,然后只要有订阅者订阅了该频道,该消息就会发送给订阅者。

     1 发布消息

       Redis中发布消息的命令是publish

.net redis发布订阅 redis实现发布订阅_服务器

publish msg 'hello redis'

msg表示频道的名称,hello redis 表示发布的内容,这样就完成了一个消息的发布,后面的返回0表示0人订阅。

2 订阅频道

订阅者的命令subscribe

.net redis发布订阅 redis实现发布订阅_服务器_02

subscribe msg: msg表示频道的名称,订阅后返回的结果中由三条信息,第一个表示类型、第二个表示订阅的频道,第三个表示订阅的数量。可以看到发布者发布的消息,订阅者都会实时的接收到,并发订阅者收到的信息中也会出现三条信息,分别表示:返回值的类型、频道名称、消息内容

3  若是想取消之前的订阅可以使用unsubscribe命令,输入命令后,返回以下结果

.net redis发布订阅 redis实现发布订阅_服务器_03

它分别表示:返回值的类型、频道的名称、该频道订阅的数量

4 按模式订阅

除了直接以特定的名称进行订阅,还可以按照模式进行订阅,模式的方式进行订阅可以一次订阅多个频道,按照模式进行订阅的命令为psubscribe,返回如下结果:

.net redis发布订阅 redis实现发布订阅_Redis_04

分别表示:返回的类型(表示按模式订阅类型)、订阅的模式、订阅数

5 取消按模式订阅

取消按模式订阅模式的命令为punsubscribe ,返回如下结果:

.net redis发布订阅 redis实现发布订阅_Redis_05

分别表示:返回的类型(表示按模式订阅类型)、订阅的模式、订阅数

6 查看某一个模式下订阅数是大于零的频道,可以使用如下格式的命令进行操作

pubsub channels msg*  --msg 为频道

.net redis发布订阅 redis实现发布订阅_Redis_06

7 假查看某一个频道的订阅数,可以使用如下命令

pubsub numsub msg

.net redis发布订阅 redis实现发布订阅_redis_07

8 查看按照模式的订阅数,可以使用如下命令进行操作:

pubsub numpat

.net redis发布订阅 redis实现发布订阅_服务器_08