Redis,监听pubsub事件并将其转化为流以实现更可靠的消费

2024-01-10

使用Redis,相当熟悉。现在,我面临着一种情况,正常的 PUBSUB 机制并不是处理某些情况的好方法。

取一个散列,我们说使用 HSET 存储对另一个散列的引用。

HSET "davids.trips" "trip1" "Stockholm"
HSET "davids.trips" "trip2" "London"

HSET "david" "age"   "12"
HSET "david" "trips" "davids.trips"       # Reference to the previous hash

现在,最后一个在内部已知并作为引用哈希处理。

然而,我们现在面临的问题是,什么时候expire现在出现在地图上"david"我们希望能够使davids.trips也因此它不会徘徊。

现在,我们可以 pubsub 使其在 HSET“david” 上过期,但是如果我们的服务器宕机了,那么我们将无法获取它,并且它将会丢失。

从 Java 中执行此操作,我们可能会丢失过期的 pubsub 消息。

相反,如果我们通过何处接收消息stream相反,该消息必须至少被一个消息消耗,并且我们可以确保它被清除。

现在,我们怎样才能做到这一点?

我们可以轻松地将 pubsub 消息转换为类似流的行为吗?

如果是这样,怎么办?我正在使用 Jedis,但我可以发送一些代码来执行此操作。理想情况下,转换将在 Redis 服务器内进行,以便 pubsub 消息永远不会not转变为流。

顺便说一句:https://redis.io/topics/pubsub https://redis.io/topics/pubsub我们可以找:“请注意,一旦进入订阅模式,redis-cli 将不会接受任何命令,只能使用 Ctrl-C 退出该模式。”所以问题是,如果我们在 Redis 中订阅,然后尝试使用它们并将它们转换为流,它就会阻塞。

必须有一种方法可以使用 lua 和 pubsub 创建线程吗?


Redis 7.0将带来带流的关键空间通知 https://github.com/redis/redis/issues/5766,也许这可以解决您的问题。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Redis,监听pubsub事件并将其转化为流以实现更可靠的消费 的相关文章

随机推荐