gpt4 book ai didi

redis - 每 "x"秒递减一个 Redis 计数器

转载 作者:IT王子 更新时间:2023-10-29 06:09:49 27 4
gpt4 key购买 nike

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

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

我所说的可靠是指:托管“每“x”秒递减一次”程序的节点故障不应导致此设置失败。

也就是说,可能有一个分布式程序来递减听起来像很多工作。因此,最好在 Redis 中内置一些东西。

最佳答案

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

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

  1. 修补 redic.s 中的 serverCron 函数,以使用带有 run_with_period 宏的自定义代码添加新条目。
  2. 将需要递减的键添加到某个特殊列表中。
  3. 在您的自定义函数中重复此键。

我认为这对于 Redis 服务器来说可能是一个非常酷的想法——添加将自定义 LUA 脚本添加到 Redis cron 管道的能力。这允许将 Redis 变成某种 LUA 应用程序服务器。

如果一致性很重要

  1. last update 时间添加到您上次减量的时间。
  2. 每次递减时更新last update
  3. 检查 last update 的值以确定递减步长:(current_time - last_update) mod X * decrement_step。

这允许您在服务器崩溃时恢复正确的递减值。

关于redis - 每 "x"秒递减一个 Redis 计数器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34785888/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com