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



使用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

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

然而,我们现在面临的问题是,当过期现在出现在映射"david"上时,我们也希望能够使davids.trips无效,这样它就不会一直存在。

现在,我们可以在HSET上发布过期的pubsub"大卫;比如说,但如果我们的服务器坏了,我们就无法拿起它,它就会在我们身上丢失。

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

相反,如果我们在哪里通过stream接收消息,则该消息必须由至少一个用户使用,并且我们可以确保它被清除。

现在,我们该怎么做?

我们能很容易地将pubsub消息转换为类似流的行为吗?

如果是,如何?我正在使用Jedis,但我可以发送一些代码来实现这一点。理想情况下,转换将在Redis服务器内进行,这样pubsub消息就不会被转换为Streams。

Btw on:https://redis.io/topics/pubsub我们可以找到:"请注意,reds-cli在订阅模式下不会接受任何命令,只能使用Ctrl-C退出该模式">所以问题是,如果我们在Redis中订阅,然后尝试消费并将其转化为流,它就会变成阻塞。

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

Redis 7.0将带流的密钥空间通知,也许这可以解决您的问题。

最新更新