从零开始Redis(九)

129 阅读3分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第19天,点击查看活动详情

🍊作者简介:少年不想说话,努力长大

🍊往期回顾:从零开始Redis(八)

🍊近期目标:写完基础源码,点赞👍🏼、收藏⭐、留言📩

今天大概的结构已经说差不多了,今天我们看看发布订阅的一些概念,这个场景还是很多的,工欲善其事,必先利其器,话不多说,开始!

发布和订阅

先来理解下这两个的概念,

发布表示将信息发送到指定的channel通道,

订阅表示订阅给定的一个或多个通道信息;

为什么要用redis呢?redis主打的是高效内存数据库,发布订阅只是普通功能啊!明明rabbitmq可是完美契合呀,其实当前我们的项目基本上能上的中间件肯定有redis,但是rabbitmq可就不一定了,有些项目完全没必要上rabbitmq,我们总不能为了一个发布订阅就整个mq吧;这个时候redis的用处就体现了;下面我们通过具体命令用例了解一下;先说订阅的SUBSCRIBE channel [channel ...],你需要订阅几个channel你就填入channel,返回的是接收到的信息,

然后我们看下发布的PUBLISH channel message,将需要发送的mess通过特定的channel发送,返回的是接受到mess的订阅者数量;

127.0.0.1:6379> SUBSCRIBE one two
Reading messages... (press Ctrl-C to quit)
1) "subscribe"
2) "one"
3) (integer) 1
1) "subscribe"
2) "two"
3) (integer) 2
1) "message"
2) "one"
3) "message123"
1) "message"
2) "two"
3) "message123456"
看看发布者
127.0.0.1:6379> publish one message123
(integer) 2 #这里2是我之前打开过一个client监听的
127.0.0.1:6379> publish two message123456
(integer) 1

通过上例我们可以发现,只要我们publish了,SUBSCRIBE一定可以快速响应的,接着我们对发布订阅的一些指令说说,PUBSUB subcommand [argument [argument ...]],该指令集下的指令可查看发布订阅的状态。

1. PUBSUB CHANNELS列出活跃的channels通道;

2. PUBSUB NUMSUB [channel...],返回指定通道的订阅者数量;不指定通道的话会返回一个空列表;

127.0.0.1:6379> PUBSUB channels
1) "two"
2) "one"
127.0.0.1:6379> PUBSUB numsub
(empty array)
127.0.0.1:6379> PUBSUB numsub one two
1) "one"
2) (integer) 2
3) "two"
4) (integer) 1

还有退订的,指定模式的订阅这些情况我就不说了,总之,发布订阅类似于我们的公众号订阅,发布者它一下只可以发一个,但是订阅者却可以订阅很多发布者发布的东西。我看很多文章说没必要学,可以如果你只是需要一个发布订阅功能,为什么要多引入一个中间件来增加学习成本和排错成本呢,最后我想说Redis主做NOSQL,但不代表它只配做NOSQL,能最大化释放效益的才是好工具,好啦🥗🥗🥗;

结束结束,那就🛴🛴🛴

如果对你有所帮助

点个赞呗