stackexchange.redis 到期密钥保存内存



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

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

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

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

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

请参阅Redis快速填满内存,运行--bigkeys释放它的解决方案,包括逐出策略和活动到期频率。

最新更新