1

在拍摄快照时,我们平均每秒会过期 1000 个密钥,我们碰巧看到转储的大小相对小于主数据库,因为快照不包括过期密钥的内存。由于过期键在我们的平台中持有大量内存,有什么方法可以让 redis 定期释放为过期键持有的内存。(我们使用的是 2.8.21 引擎)或最新的 redis 引擎版本将无法有效解决此问题。如果 stackoverflow 不适合我的问题,请引导我到正确的平台。

回收内存指南:https ://docs.redislabs.com/latest/ri/memory-optimizations/reclaim-expired-keys-memory-faster/ (但需要建议,升级是否有很大帮助或进行扫描会很好文档中提到)

4

1 回答 1

1

过期的密钥从内存中删除:

  • 被动:当你尝试访问它并且发现密钥超时时。这就是做一个完整的SCAN帮助你的方式,它强制对所有键空间进行被动删除。
  • 主动:每 100 毫秒,它会尝试从内存中随机删除过期的密钥,每个周期在它上的投入永远不会超过 1 毫秒,直到它估计剩余的过期密钥少于 25%。逻辑不是那么简单,请参阅activeExpireCycle2.8.21 版本)。

升级可能会有所帮助,因为有新的功能/配置设置,例如activedefrag.

请参阅Redis 快速填满内存,运行 --bigkeys free it up for solutions,包括驱逐策略和活动过期频率。

于 2020-02-12T16:12:04.470 回答