如何解决Redis,主题发布/订阅是否始终会传递给至少一个订户?
例如,如果发生密钥/值到期事件,并且发送了一个主题,但所有客户端都关闭了,即使一个客户端上线并且在一年之内,该主题也将被传递订阅该主题?
如果两个客户稍后大约在同一时间上线怎么办?
如果两个客户上线但彼此之间有很大的延迟,该怎么办?
这些主题稍后会播出,但是我注意到,如果我掉线并重新连接,我可以在重新上线时传递这些主题。
当我重新启动时,尽管它是“新客户端”,但我没有得到旧的。
这是怎么回事?这些东西的内部规则是什么?
解决方法
Pub / Sub是同步通信。各方需要同时处于活动状态才能进行通信。 Redis在这里是纯同步消息传递代理。
您对前三个问题的回答是否定的。没有消息的持久性,不在磁盘中,也不在内存中。消息发布后,它会发送到当前已订阅的客户端连接。 PUBLISH命令将立即返回接收到消息的客户端数量:O(N + M)其中N是订阅接收通道的客户端数量,M是订阅模式的总数(按任何方式客户)。
...但是我注意到,如果我掉线并重新连接,我可以在重新上网时获得主题信息
R /我想这取决于您对“ 我沮丧”的意思。邮件必须在客户端的某个地方缓存。也许Redis Server中的客户端连接仍处于活动状态,并且消息仍在客户端输出缓冲区中。
您可能会发现此资源有用:
What are the main differences between Redis Pub/Sub and Redis Stream?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。