订阅-redis,主题(pub/sub)是否总是传递给至少一个订阅者?

9bfwbjaz  于 2021-06-08  发布在  Redis
关注(0)|答案(1)|浏览(357)

例如,如果某个key/val上发生过期事件,并且发送了一个主题,但所有客户端都关闭了,那么即使在一年内,当一个客户端联机并订阅该主题时,该主题也会被传递吗?
如果两个客户同时上网呢?
如果有两个客户在线,但中间有一个巨大的延迟呢?
这些主题稍后会广播,但我注意到,如果我情绪低落并重新连接,我可以在返回在线时获得主题。
当我重新启动时,我没有得到旧的,尽管它是“一个新的客户端”。
怎么回事?这些东西的内部规则是什么?

hfwmuf9z

hfwmuf9z1#

发布/订阅是同步通信。所有各方都需要在同一时间积极沟通。这里redis是一个纯粹的同步消息代理。
前三个问题的答案是否定的。消息没有持久性,不在磁盘中,也不在内存中。当消息发布时,它将被发送到当前订阅的客户端连接。publish命令将立即返回接收到消息的客户端数:o(n+m),其中n是订阅到接收通道的客户端数,m是订阅的模式总数(由任何客户端)。
... 但我注意到,如果我情绪低落,重新连接,我可以得到的主题,当我回到网上
我想这取决于你所说的“我情绪低落”是什么意思。消息必须缓存在客户端的某个位置。或者redis服务器中的客户机连接仍然处于活动状态,并且消息在客户机输出缓冲区中。
您可能会发现这些资源非常有用:
redis pub/sub和redis stream的主要区别是什么?
发布/订阅

相关问题