使用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将带流的密钥空间通知,也许这可以解决您的问题。