CONFIG SET maxmemory 4gb CONFIG SET maxmemory-policy allkeys-lru redis-cli --bigkeys
缓存写入突然全部失败,报内存超限,读请求还正常,日志里命令被拒绝。先别急着动参数,把报错原文和时间点记下来,顺序反了容易白折腾。
原因不复杂,内存达到 maxmemory 上限且淘汰策略为不淘汰,写命令直接被拒绝。
「Redis 内存溢出」排查到最后往往是很小的一处差异,前面那些复杂猜测可以先放一放。备份不是备了就行,恢复一次才算数,很多备份文件打开才发现是空的。
接口问题先分清是没发出去、发出去了没收到,还是收到了处理失败。偶发问题先统计频率,一小时几次和一天一次,查法完全不同。
改完顺手把文档补一句,省得下次自己重新推一遍。监控和日志的时间要对上,时区不一致会多绕很大一圈。
处理上按这个顺序:按业务选择淘汰策略;确认是否混入了大 key;必要时扩容并设置内存水位告警。
改完只确认一件事:写入恢复正常,内存稳定在上限以内,缓存命中率没有明显下降。