【发布时间】:2023-03-14 22:55:01
【问题描述】:
Redis 的 allkeys-lru maxmemory 策略是否要求数据库中的所有键都设置过期时间?
没有设置过期时间的故障转移是什么?
【问题讨论】:
-
它将杀死最近最少使用的非过期密钥。我发现了这一点,因为 AWS ElastiCache 默认为
volatile-lru,我们的空间不足,切换到allkeys-lru很好地解决了这个问题。 -
@ceejayoz 我一直在使用allkeys-lru,有时似乎无法删除下一个键所需的空间,并且redis崩溃
-
这看起来很奇怪,不符合我的经验或文档。您确定配置更改确实有效吗?在这些崩溃之一之后,日志会说什么?
-
@ceejayoz 我查看了日志,里面只有启动日志 - 没有关于崩溃的内容。我在 redis-cli 上执行“信息”以检查它是否有效……确实如此。 used_memory_peak_rss 远高于 maxmemory... 可能有内存碎片?
-
检查您的主服务器系统日志,特别关注显示
oom的任何内容。我敢打赌,您的服务器在 Redis 之前内存不足,因此内存不足的杀手正在终止 Redis(作为一个内存繁重的进程)。