【问题标题】:Using redis pub-sub for key expiry使用 redis pub-sub 进行密钥过期
【发布时间】:2016-12-22 15:56:09
【问题描述】:

我有一个要求,我将我的密钥推送到具有一些过期时间的 redis。还有一个订阅者来监听密钥过期事件,然后回调到我的其他系统,该系统可以对其执行一些业务规则。对这个用例的 redis pub-sub 有信心是一个好的设计吗? 键的平均 TTL 范围约为 15 分钟。

使用其他设计将使我拥有一个调度程序/cron(每分钟)或一些轮询系统。

【问题讨论】:

    标签: redis publish-subscribe node-redis redistributable


    【解决方案1】:

    是的,我一直在将 Redis pub/sub 用于生产中完全相同的用例,并且对我来说工作得很好,没有任何问题。

    【讨论】:

    • 谢谢 Alok,您能再帮忙做一件事吗 - 在生产中,我将在多台机器上进行此设置,订阅者将在所有这些机器上运行。那么处理相同过期事件的最佳方法是什么,以便我不会回调其他系统而不是密钥过期?
    • 您是指生产环境中的主从设置还是集群。在集群的情况下,这不会是一个问题,因为任何特定的密钥都只会存储在一个实例上。在主/从设置的情况下,您可以让订阅者仅监听来自主实例的事件。
    • 不,我的意思是订阅者将在一个 Java 应用程序中,该应用程序将订阅 redis 主到期事件。现在这个应用程序将部署在多台机器上,所以到期事件将出现在所有订阅的机器上(因为所有机器都将具有相同的包装和相同的订阅者代码)。收到此事件后,我将对其他系统进行回调,因此我该如何处理这种情况,即我不会从所有机器发送回调,因为它将重复到期事件。一种方法是仅在一台机器上部署订阅者应用程序。但是最好的方法是什么?
    • Redis 没有共享订阅。您必须在单个实例上运行 Java 应用程序。您可以使用 Kafka 作为 Java 应用程序和其他系统之间的缓冲区来处理负载峰值。
    猜你喜欢
    • 1970-01-01
    • 2015-11-09
    • 1970-01-01
    • 1970-01-01
    • 2012-12-01
    • 2019-12-02
    • 2016-01-18
    • 2011-10-17
    • 1970-01-01
    相关资源
    最近更新 更多