Redis Pub Sub - 只有一个订阅者才能对过期事件采取行动

时间:2018-02-19 14:45:07

标签: redis

我正在我的应用程序中实现redis Keyspace通知,该通知在我们的生产环境中有10个实例。

我的pubsub在map1中侦听过期事件,在map2中逐渐减少。

这在我的本地计算机上运行正常。我的问题是,当我使用多个实例部署我的应用程序时,我认为所有实例都将读取过期事件,并且所有实例都将减少密钥,而我想限制只有1个实例应该减少。

有没有办法实现这个目标?

1 个答案:

答案 0 :(得分:0)

你的听众必须以某种方式协调减量。您可以通过某种锁定来实现,但更简单的方法可能是将版本/时间戳的概念嵌入到此逻辑中。这就是我的想法。

如果您在" map2"中添加了时间戳,该怎么办?过期事件具有自己的时间戳,因此您可以让侦听器对其进行检查和设置(提示:我将Lua用于CAS)。这将一次性防止类似种族的情况和多次减少。

注意:Redis PubSub非常棒,但请注意,您当前的解决方案无法确保" map2"万一邮件丢失。在不久的将来,Redis将提供Stream数据类型,更适合该类型的工作。具体来说,流消费者组功能就像IMO一样,可以替代密钥空间通知。