【问题标题】:Customize Redis Expiration Keys Algorithm自定义 Redis 过期密钥算法
【发布时间】:2022-01-07 09:48:21
【问题描述】:

我的一个微服务项目存在性能问题,即连接或执行命令到 redis 的延迟很高。经过一番调查,我得出了这个结论:

根据 Redis 文档,用于过期键的 redis 算法是:

  1. 从具有关联过期时间的密钥集中测试 20 个随机密钥。
  2. 删除所有发现过期的密钥。
  3. 如果超过 25% 的密钥过期,请从第 1 步重新开始。

在我的项目中,每秒创建或更新 30 个密钥,其 ttl 为 10 分钟,大约是所有存储密钥的三分之一。

这是否意味着在大多数算法的执行中,我们满足第三步的条件,并且 redis 在过期键上消耗了大部分资源?如果是这样,我可以通过更改一些配置来自定义或覆盖该算法的默认行为吗?或者有什么替代方案吗?

【问题讨论】:

    标签: performance redis customization redis-cluster


    【解决方案1】:

    如果您的附加密钥是非易失性的,则不应考虑 25% 或更多的密钥已过期。

    默认的redis configactive-expire-effort 1 在1-10的范围内。增加只会分配更多的 CPU 来清理。但是,如果到期不是延迟的根本原因,增加也可能不会产生影响。从这里的信息来看,鉴于您将拥有约 18k 易失性密钥,密钥到期可能不是问题。

    在替代方案方面,您可以进一步考虑troubleshooting

    【讨论】:

      猜你喜欢
      • 2020-09-26
      • 2020-04-19
      • 2016-04-25
      • 1970-01-01
      • 2012-08-04
      • 2017-09-18
      • 2023-03-04
      • 2015-08-14
      • 2017-02-12
      相关资源
      最近更新 更多