Redis过期键保存内存

redis expiry keys holding memory

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

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

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

  • 被动:当你试图访问它,发现密钥超时。 这就是完整 SCAN 对您有帮助的方式,它强制对所有键空间进行被动删除。
  • 主动:每 100 毫秒,它会尝试从内存中删除过期的键 at random, never investing more than 1 ms per cycle at it, until it estimates that less than 25% of expired keys remain. The logic is not that trivial, see activeExpireCycle (2.8.21 version)。

升级可能会有帮助,因为有新的 features/configuration 设置,例如 activedefrag

请参阅 了解解决方案,包括驱逐政策和主动过期频率。