redis pub sub 会在频道中保留历史消息吗?

Posted

技术标签:

【中文标题】redis pub sub 会在频道中保留历史消息吗?【英文标题】:does redis pub sub persist historical messages in a channel? 【发布时间】:2013-08-07 10:42:38 【问题描述】:

我无法在文档中找到有关通道中的消息如何存储在 redis 发布/订阅中的文档。

当您发布到 redis 通道时,该消息是存储还是持久化?如果有,它会存储多长时间?如何获取历史消息?

否则,我假设它只是广播该消息并在这样做之后丢弃/删除该消息?

【问题讨论】:

其实redislabs.com/redis-best-practices/communication-patterns/…说的很清楚“这些消息是fire-and-forget,如果一个消息发布了,没有订阅者存在,消息就蒸发了,无法恢复。” 【参考方案1】:

您可以使用 sine 5.0 版本发布的Redis Streams。 它们支持持久性并且可以满足您的需求。 您可以从the article 找到更多详细信息,比较这些相似但不同的数据类型。

【讨论】:

【参考方案2】:

发布/订阅消息没有排队,甚至更少持久化。

它们仅在套接字缓冲区中缓冲,并在与发布相同的事件循环迭代中立即发送给订阅者。

如果订阅者未能阅读消息,则订阅者会丢失此消息。

【讨论】:

知道如何保存这些消息吗?我正在尝试实现类似聊天的功能 您可以将它们存储在列表中。使用 LPUSH 存储项目,使用 LPOP 或 BLPOP 将其出列。您必须自己实现发布/订阅行为。 哦好的..谢谢:) @RahulDess 现在你可以使用Redis Keyspace Notifications @DidierSpezia 如果是这种情况,为什么我会在 pubsub 客户端看到高输出缓冲区大小?

以上是关于redis pub sub 会在频道中保留历史消息吗?的主要内容,如果未能解决你的问题,请参考以下文章

SpringBoot 集成Redis pub/sub

2-redis的pub/sub发布订阅

redis学习

Redis 发布订阅

Redis_05_Redis发布订阅(Pub/Sub)

Redis_03_Redis发布订阅(Pub/Sub)