一、简介
大家是不是很好奇,什么事订阅与发布,其实订阅预发布的应用场景在我们的显示生活中的应用是十分广泛的,举一个例子:我们在关注某一个公众号的后,公众号推送的消息我们是可以接受到的,但是如果我们没有关注该公众号,那么我们就接受不到消息。
在redis中实现订阅与发布的大体流程如下:
下图展示了频道 channel1 , 以及订阅这个频道的三个客户端 —— client2 、 client5 和 client1 之间的关系:
当有新消息通过 PUBLISH 命令发送给频道 channel1 时, 这个消息就会被发送给订阅它的三个客户端:
如果你玩过公众号,那么你对这样流程不会陌生。作为公众号文章的发布人,你是可以看到你发布的内容有多少人接受(订阅你公众号的用户)。
二、实现
Redis 发布订阅命令
命令 | 描述 |
---|---|
PSUBSCRIBE pattern [pattern …] | 订阅一个或多个符合给定模式的频道。 |
PUBSUB subcommand [argument [argument …]] | 查看订阅与发布系统状态。 |
PUBLISH channel message | 将信息发送到指定的频道。 |
PUNSUBSCRIBE [pattern [pattern …]] | 退订所有给定模式的频道。 |
SUBSCRIBE channel [channel …] | 订阅给定的一个或多个频道的信息。 |
UNSUBSCRIBE [channel [channel …]] | 指退订给定的频道。 |
测试
如下图所示,两个客户端现在都订阅的studioustiger
这个频道,目前处于等待发布的状态
第三台机器现在发布了hello ,I'm studioustiger
这么一条消息到studioustiger
频道
当studioustiger
频道发布消息时,订阅了studioustiger
频道的用户将会收到发布的消息。
message:表示一条消息
studioustiger:表示当前消息的发布者是studioustiger
hello ,I’m studioustiger:消息内容
愿你不负韶华,归来仍是少年…