gpt4 book ai didi

redis - 使用 redis 的可恢复 PUB/SUB

转载 作者:IT王子 更新时间:2023-10-29 05:57:21 27 4
gpt4 key购买 nike

我正在构建一个由 Redis 支持的 PUB/SUB 系统。

我有一个发布者和大量订阅者。订阅者并不那么可靠,他们随时可能失去连接并且需要能够从失去的连接中“恢复”。

不过有一个转折点,我希望我的积压有一定数量的上限,这意味着有故障的订阅者应该能够恢复最多 N 条消息。

简单的解决方案是:

  1. 发布者发布消息 X
  2. X 被推送到列表 RPUSH 列表消息
  3. 消息被编码以包含其在列表中的索引
  4. 消息发布给消费者(嵌入索引)PUBLISH channel encoded

如果消费者需要重新建立:

  1. 它在它拥有的索引之后向 redis 询问列表中的所有值,并以原子方式执行 PSUBSCRIBE

到这里我们都很好。

我的大问题是,如果我希望积压列表的上限为 N 项怎么办?

有什么方法可以让我在列表中保持不断增加的索引和有上限的积压?

最佳答案

这个怎么样?要发布消息,请执行

LPUSH list message
LTRIM list 0 N
INCR global_index
PUBLISH channel global_index

当通过 pub/sub 接收消息并启动时,客户端需要将其最新索引(这也可以保存在 redis 或其他地方)与 global_index 进行比较并读取 min(global_index - my_index, N) 消息从列表中 catch (基本上是 LRANGE list 0 (global_index - my_index))。

关于redis - 使用 redis 的可恢复 PUB/SUB,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13869876/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com