学习Redis之前,我还是觉得我务必跟你说一声,也是在我文章之中说的很多的一句话,我想也会适用于学习Redis,那就是在接触文章里的Reids命令时,不用试图去记这些命令 ,用到时去看API帮助文档即可;会用了或者实践过了再去了解也不会迟。
上手Redis系列
上手Redis系列(一):超全String字符串类型详解
上手Redis系列(二):超全List列表类型详解(代码图文示例)
上手Redis系列(三):超全集合Set类型详解(代码图文示例)
上手Redis系列(四):超全哈希Hash类型详解(代码图文示例)
上手Redis系列(五):超全有序集合Zset类型详解
上手Redis系列(六):超全Geospatial特殊类型详解(地理位置)
上手Redis系列(七):超全HyperLogLog特殊类型详解
上手Redis系列(八):Bitmaps特殊类型详解
上手Redis系列(九):事务操作
进阶Redis系列(十):超全详解Redis持久化机制RDB
进阶Redis系列(十一):超全详解Redis持久化机制AOF
这篇的开头标题本来是《好玩的Redis发布/订阅》,但是怕你们说我不务正业,所以还是老老实实的改成中规中距样子,但你别看标题老实,文章内容可好玩啦!
一、什么是Redis的发布/订阅
Redis的发布订阅是一种消息通信模型,发布者不是发送信息给特定的接收者,而是发布消息分到不同的频道。不需要知道什么样的订阅者,也不需要知道什么样的发布者;订阅者可以订阅任意数量感兴趣频道,然后接收感兴趣的消息即可。
使用到发布与订阅的例子比比皆是,微博、微信公众号、还有经常追番且是一个优秀的学习网站 B站。
在B站中有频道这一个功能,频道可以说是对视频类型的分类。
我们可以订阅任意数量感兴趣的频道,作为订阅者的我们并不需要知道是谁发布的,作为发布者也并不需要谁订阅;只要频道有更新新的消息,我们接收订阅了的频道信息即可。
道理是一样一样的。
Redis的发布与订阅通过不同的频道来为发布者和订阅者做中间管道。
这种发布者和订阅者的解耦合带来了更大的扩展性和更加动态网络的拓扑。
二、Redis发布订阅命令
命令不多,都是常用的,但也无须刻意记,去玩几遍,自然就深刻了。
PSUBSCRIBE pattern [pattern …] | 订阅一个或多个给定模式频道 |
---|---|
PUBSUB subcommand [argument [argument …] | 查看订阅与发布系统状态。 |
PUBLISH channel message | 将信息发送到指定的频道。 |
PUNSUBSCRIBE [pattern [pattern …] | 退订所有给定模式的频道。 |
SUBSCRIBE channel [channel …] | 订阅任意数量频道。 |
UNSUBSCRIBE [channel [channel …] | 指退订给定的频道。 |
三、实践Redis的发布/订阅
3.1创建会话
首先我们创建会话,分别有客户端:client1和client2,还有我们的频道channel。
3.2 SUBSCRIBE 订阅频道
通过client1和client2来 SUBSCRIBE 订阅一个yikepiaohandezhongzi频道。
SUBSCRIBE channel [channel …] 订阅给定的任意数量频道。
3.2 PUBLISH 推送消息
我们往频道 PUBLISH 推送一条消息
可以看到 integer 2 ,说明成功往 client1 和 client1 这两个客户端发送了信息。
PUBLISH [channel message] 将信息发送到指定的频道。
client1 和 client2 实时的接收到了消息。
四、图解发布与订阅
如果你已经跟着上面节奏实践了一遍,那么看下面图,会有更深刻的理解。
当然,没有也没有关系啦,但是回过头是要去实践哦
知识只有检验过才是你的。
看图,首先三个client客户端会订阅channel1(频道1)。
记住一定是要客户端订阅了频道,才可以接收到来自频道的消息。
当有新消息发送给channel1时,这个消息就会推送给订阅了的client客户端,而client一旦订阅了就会实时接收到消息。
五、应用场景
Redis发布与订阅的应用场景,除了上面所说微博、B站所使用的订阅频道(内容类型),其实还有更明显的用法就是关注和实时消息的传输类,例如:我们生活上最常用的社交功能,聊天,群聊、私信等等功能。
当然,更为复杂的系统应用场景可以使用我们消息中间件,毕竟术业有专攻,这个后续关注我的小伙伴,会优先抖动你的小窗口的哦,嘿嘿。
六、最后
最后的最后,为了更好的阅读体验,我把想说的话都放在了下面,嘿嘿。
我是一颗剽悍的种子 把我会的,认真的分享 是我写博客一直不变的信条。
如果你能看到这篇博文,说明咱们还是很有缘的;希望能带给你一些许帮助,创作的不易, 把我文章的知识带走,你的三连留下,点赞,评论,关注,是我最大的动力。