每减少一个Redis计数器" x"秒

时间:2016-01-14 09:29:29

标签: redis distributed-computing

我有一个用例,我需要每次减少一个redis" x"秒。有没有办法在Redis中做到这一点? Redis有" aeCreateTimeEvent",但它是否暴露给客户?

如果我们从Redis外部执行此操作,我们需要一种可靠的方法来调用代码来减少存储在Redis中的计数器。

通过可靠,我的意思是:托管&#34的节点失败每个" x"秒"程序,不应该导致此设置失败。

那说可能有一个分布式程序来减少听起来像很多工作。所以最好在Redis中内置一些东西。

1 个答案:

答案 0 :(得分:3)

不,aeCreateTimeEvent因为所有简单事件库(在AE_H中描述)仅在Redis内部使用。但是通过一些小的Redis服务器修补,这里真的很难做到这一点。

我们用这种方式解决类似的问题:

  1. serverCron修补redic.s个功能,添加带有run_with_period宏的自定义代码的新条目。
  2. 将您需要递减的密钥添加到某个特殊列表中。
  3. 在自定义函数中迭代此键。
  4. 我认为这对Redis服务器来说可能是一个非常酷的想法 - 添加将自定义LUA脚本添加到Redis cron管道的功能。这允许将Redis转换为某种LUA应用程序服务器。

    如果一致性很重要

    1. 上次缩减时添加last update时间。
    2. 每次减量时更新last update
    3. 检查last update的值以确定递减步骤:(current_time - last_update)mod X * decrement_step。
    4. 如果服务器崩溃,这允许您恢复正确的减少值。

相关问题