扫码一下
查看教程更方便
发布/订阅(pub/sub)系统是web系统中比较常用的一个功能。可以认为是一种消息通信模式:简单来说就是发布者(pub)发布消息,订阅者(sub)接收消息。传递消息的通道称为channel。
我们可以使用前面讲到的列表(lists)结合lpush命令和rpop命令来实现消息队列的功能,但是这里会有一个问题就是很难实现消息多播
的功能。 也就是说基于列表的消息队列是一种点对点的强关联的关系
Redis为了消除这种强关联性,引入了另一个概念:频道(channel
)。
一个频道可以由任意数量的客户端订阅
当发布者(publisher)将新的消息推送到频道之后,这个消息会被发送给该频道的三个订阅者
接下来我们举例说明,让我们开启三个redis-cli
客户端。两个作为订阅者,一个作为发布者。
第一个客户端(订阅者1)
redis 6379> subscribe jiyikChannel
Reading messages... (press Ctrl-C to quit)
1) "subscribe"
2) "jiyikChannel"
3) (integer) 1
第二个客户端(订阅者2)
redis 6379> subscribe jiyikChannel
Reading messages... (press Ctrl-C to quit)
1) "subscribe"
2) "jiyikChannel"
3) (integer) 1
订阅者1 和 订阅者2 订阅频道jiyikChannel成功之后,会一直在监听状态。
第三个客户端(发布者)
127.0.0.1:6379> publish jiyikChannel "Publish Subscribe Test"
(integer) 2
当发布者发布信息成功之后,两个订阅者会收到发布者发布的这个信息
上面主要使用到了两个命令,发布消息PUBLISH命令和订阅频道SUBSCRIBE命令。
Redis的发布订阅模块涉及到的命令有六个
序号 | 命令 | 说明 |
---|---|---|
1 | PUBLISH | 将信息发送到频道 |
2 | PUBSUB | 查看订阅与发布系统状态 |
3 | PSUBSCRIBE | 订阅一个或多个符合给定模式的频道 |
4 | PUNSUBSCRIBE | 退订所有给定模式的频道 |
5 | SUBSCRIBE | 订阅给定的一个或多个频道的信息 |
6 | UNSUBSCRIBE | 指退订给定的频道 |