Redis的发布订阅_节点动态java精修学校
事实上,很多MQ产品在这样一个模型,我们经常听到的是邮件订阅场景的一个例子,你是什么意思,也就是说100人订阅你的博客,如果博主发表的文章,然后100人也将收到短信通知,你认为除了这个场景可以发现其他的场景,当然,如果你想做一个独立的读写内存中的程序,以保持数据的完整性,你需要确保写入时间也应分配到各个存储读取程序吗所以场景仍然很多,在你的采矿下面或从基本命令:一:简要介绍命令
从使用手册中可以看出,事实上,发布订阅模式只有6个命令,下面听我解释下~ ~ ~ ~
1。订阅
订阅通道{通道…}
信息订阅一个或更多的通道。
从上面的官方解释来看,它的演奏有点像现实生活中的那样,我们听收音机,想听听收音机。我们要怎么办当然是调频,只有在正确的频道,我们才能听到好的节目,所以订阅必须先订阅一个频道(频道),下面我举例来说,两个客户端,分别是MSG订阅这个频道,如下:
2.publish
So far, these two subscibe are monitoring the MSG channel. 接下来,如果MSG频道有消息,它将通过订阅接收。让我们来看看如何使用这个命令使用手册。
信息发布渠道
将信息消息发送到指定的信道通道。
看到上述命令的使用,我感到放心了。
在订阅监视后,将消息发送到MSG通道。然后分别印刷。好的,到目前为止,最基本的发布和订阅模式是。很简单吗事实上,什么这很简单,但有时我们有需要,也就是说,我能有一个模糊的匹配键吗例如,你想订阅的所有渠道与中国作为前缀,如果是可以做的,它真的很棒。一个强大的redis会自然地做到这一点,并命令它提供的是:Psubscribe。
三.psubscribe
psubscribe模式{模式…}
订阅符合给定模式的一个或多个频道。
每种模式使用*匹配的符号,例如,它匹配所有渠道开始与它(it.news,it.blog,it.tweets,等),消息。*匹配所有频道从新闻。(个人,news.global.today等等),等等。
当你看到上面的解释时,你可能会想,这不是一个正规的匹配,前缀p是模式的意思。对,然后我会订阅所有中国前缀的通道。
最常见的是三个命令,然后我们简单地分析代码。
二:简单的源码分析
事实上,Redis的发布订阅模式存储在RedisServer pubsub_channels词典和pubsub_patterns阵列,所有的操作代码
在PubSub C文件,如下图:
1。pubsub_channels
正如您所看到的,它是一个字典结构,通过注释您应该知道它的键是通道,而值是列表。
2 pubsub_patterns
从注释中可以看到,它是存储模式匹配的订阅的客户机列表,对,它是用列表数组实现的。
三.subcribecommand
通过下面的代码,你头脑中有提纲吗事实上,这真的是pubsub_channels关键=通道存储值=列表模式,列表被称为客户名单,在这种情况下,你会看到。哪一个键挂在上面,如果客户发布,只需要遍历这个列表,你知道结果。
4。publishcommand
以前,发布的原理很简单,就是在字典中找到通道,键,到达客户端后,遍历客户端发送信息。
同样的原因,pubsub_patterns几乎是一样的,你只要简单地看看PubSub的源代码。C,几乎都会理解的