Redis,一个主题(发布/订阅)是否总是发送给至少一个订户?

Redis,一个主题(发布/订阅)是否总是发送给至少一个订户?,redis,publish-subscribe,Redis,Publish Subscribe,例如,如果某个密钥/val发生过期事件,并且发送了一个主题,但所有客户端都关闭了,那么即使在一年内,当one客户端联机并订阅该主题时,该主题是否也会被发送 如果两个客户稍后大约在同一时间上网怎么办 如果两个客户联机,但其间有很大的延迟,该怎么办 这些主题稍后会广播,但我注意到,如果我关机并重新连接,我可以在返回在线时获得主题 当我重新启动时,我不会得到旧的,尽管它是“一个新客户机” 发生了什么事?这种东西的内部规则是什么?Pub/Sub是同步通信。所有各方都需要在同一时间积极行动,以便能够进行沟

例如,如果某个密钥/val发生过期事件,并且发送了一个主题,但所有客户端都关闭了,那么即使在一年内,当one客户端联机并订阅该主题时,该主题是否也会被发送

如果两个客户稍后大约在同一时间上网怎么办

如果两个客户联机,但其间有很大的延迟,该怎么办

这些主题稍后会广播,但我注意到,如果我关机并重新连接,我可以在返回在线时获得主题

当我重新启动时,我不会得到旧的,尽管它是“一个新客户机”


发生了什么事?这种东西的内部规则是什么?

Pub/Sub是同步通信。所有各方都需要在同一时间积极行动,以便能够进行沟通。在这里,Redis是一个纯粹的同步消息代理

前三个问题的答案是否定的。消息不存在持久性,不存在于磁盘中,也不存在于内存中。发布消息时,会将其发送到当前订阅的客户端连接。该命令将立即返回接收到消息的客户端数量:O(N+M),其中N是订阅接收通道的客户端数量,M是订阅模式的总数(由任何客户端)

。。。但我注意到,如果我情绪低落并重新连接,我可以在重新上网时获得主题

我想这取决于你说的“我情绪低落”是什么意思。消息必须缓存在客户端的某个位置。或者,Redis服务器中的客户端连接仍处于活动状态,并且消息位于客户端输出缓冲区中

您可能会发现这些资源非常有用:


发布/订阅是同步通信。所有各方都需要在同一时间积极行动,以便能够进行沟通。在这里,Redis是一个纯粹的同步消息代理

前三个问题的答案是否定的。消息不存在持久性,不存在于磁盘中,也不存在于内存中。发布消息时,会将其发送到当前订阅的客户端连接。该命令将立即返回接收到消息的客户端数量:O(N+M),其中N是订阅接收通道的客户端数量,M是订阅模式的总数(由任何客户端)

。。。但我注意到,如果我情绪低落并重新连接,我可以在重新上网时获得主题

我想这取决于你说的“我情绪低落”是什么意思。消息必须缓存在客户端的某个位置。或者,Redis服务器中的客户端连接仍处于活动状态,并且消息位于客户端输出缓冲区中

您可能会发现这些资源非常有用:


这不是同一个问题,但这可能回答了您的一些问题。这不是同一个问题,但这可能回答了你的一些问题。关于后一点,没有。我是从java程序运行它的。我把它关掉了。肯定是下来了。我甚至等了几分钟才重新连接。Redis仍在另一台机器上运行。当我启动一个全新的程序时,不知何故,我能够得到我应该错过的消息(地图插入的过期事件)。这可能与Redisson有关,但我决定无论如何都不相信这个功能。谢谢关于后一点,没有。我是从java程序运行它的。我把它关掉了。肯定是下来了。我甚至等了几分钟才重新连接。Redis仍在另一台机器上运行。当我启动一个全新的程序时,不知何故,我能够得到我应该错过的消息(地图插入的过期事件)。这可能与Redisson有关,但我决定无论如何都不相信这个功能。谢谢