Redis内存淘汰策略maxmemory

Redis 的内存淘汰策略 maxmemory-policy 决定了当内存达到上限时,Redis 如何选择要删除的键。
如果你不设置,Redis 在内存满时可能直接返回错误,导致写入失败。
本文从零开始,带你理解 8 种策略的区别,并一步步完成配置和验证。

为什么需要设置 maxmemory-policy

Redis 作为缓存或数据库,内存是有限资源。
当 used_memory 超过 maxmemory 时,如果没有淘汰策略,Redis 会拒绝所有写命令并返回 OOM command not allowed when used memory > 'maxmemory'。
设置合适的策略可以让 Redis 自动清理旧数据,保证服务可用。

关键结论:只有设置了 maxmemory 且值大于 0 时,maxmemory-policy 才会生效。

8 种淘汰策略快速对比

  • noeviction:默认策略,不淘汰任何键,内存满时写命令报错。适合数据不能丢失的场景。
  • volatile-lru:从设置了过期时间的键中,淘汰最近最少使用的键。
  • volatile-lfu:从设置了过期时间的键中,淘汰访问频率最低的键(Redis 4.0+)。
  • volatile-random:从设置了过期时间的键中随机淘汰。
  • volatile-ttl:从设置了过期时间的键中,淘汰剩余生存时间最短的键。
  • allkeys-lru:从所有键中淘汰最近最少使用的键。适合纯缓存场景。
  • allkeys-lfu:从所有键中淘汰访问频率最低的键(Redis 4.0+)。
  • allkeys-random:从所有键中随机淘汰。

判断条件:如果数据都设置了过期时间,可以用 volatile-* 系列;
如果所有数据都允许淘汰,用 allkeys-* 系列。

配置 maxmemory-policy 的两种方法

方法一:修改配置文件(永久生效)

  1. 找到 Redis 配置文件,通常位于 /etc/redis/redis.conf 或安装目录下。
  2. 编辑文件,添加或修改以下两行:
maxmemory 2gb
maxmemory-policy allkeys-lru
  1. 保存后重启 Redis 服务:
sudo systemctl restart redis

方法二:通过命令行动态设置(临时生效)

连接 Redis 后执行:

redis-cli config set maxmemory 2gb
redis-cli config set maxmemory-policy allkeys-lru

动态设置重启后失效,适合测试。

验证策略是否生效

  1. 查看当前配置:
redis-cli config get maxmemory
redis-cli config get maxmemory-policy
  1. 查看内存使用和淘汰统计:
redis-cli info memory | grep used_memory_human
redis-cli info stats | grep evicted_keys

如果 evicted_keys 持续增加,说明淘汰正在工作。

避坑指南

  • 不要在生产环境使用 noeviction 却不监控内存,否则写入会失败。
  • volatile-* 策略可能无键可淘汰:如果没有键设置过期时间,内存满时依然会报错。
  • LRU 和 LFU 不是精确算法,Redis 使用近似采样,受 maxmemory-samples 影响。
  • 修改 maxmemory 后要观察一段时间,避免淘汰过快导致缓存命中率下降。

常见疑问

maxmemory-policy 应该选哪个?
如果 Redis 只做缓存,推荐 allkeys-lru;如果部分数据需要持久化,用 volatile-lru 并确保设置了过期时间。

设置了策略为什么还是 OOM?
检查 maxmemory 是否大于 0,以及策略是否为 noeviction。另外,从节点和主节点的策略可能不同。

LRU 和 LFU 哪个好?
LFU 更适合热点数据稳定的场景,LRU 适合访问模式变化快的场景。Redis 4.0 以上才支持 LFU。

配置完成后,建议用 redis-cli --stat 实时观察内存和淘汰情况。
如果问题依旧,优先检查 maxmemory 设置和键的过期时间分布。

分享到:
上一篇
帝国CMS采集内容过滤HTML标签,清理内容格式
下一篇
内网Samba文件共享,机房内网文件服务器
1
系统公告

泽御云中秋国庆双节活动上线:新购8折,拼团3.99元起

尊敬的用户:
泽御云“月满中秋·礼贺国庆”双节活动现已开启,活动时间为2026年9月23日至10月10日。 活动期间可享以下福利:
1. 常规云服务器新购使用优惠码“泽御中秋国庆同乐”,符合条件的订单享8折优惠。
2. 香港精品云服务器5人拼团低至3.99元,部分4核4G套餐3人拼团年付388元,续费同价。
3. 新用户购买年付云服务器,符合活动规则可赠送2个月使用时长。
4. 老用户续费季度赠15天,续费年度赠2个月;活动期间升级配置免收配置迁移手续费。
5. 推荐好友成功下单,符合条件的推荐人可获赠7天服务器使用时长。
6. 活动期间享宕机补偿标准翻倍、简单网站迁移协助及技术工单优先处理权益。
温馨提示:优惠码不适用于拼团套餐、活动轻量产品、年付订单及续费订单;拼团套餐为独立特价活动,不与赠时类福利叠加。赠送时长不可折现、退款或跨账户转移,具体规则以活动页面说明为准。
服务中心
客服
在线客服
24小时为您服务
咨询
联系我们
联系我们,为您的业务提供专属服务。
24/7 技术支持
如果您遇到寻求进一步的帮助,请过工单与我们进行联系。
24/7 即时支持
泽御云
售前客服
泽御云
泽御云
售后客服
泽御云
技术支持
评价
您对当前页面的整体感受是否满意?
😞
非常不满意
😕
不满意
😐
一般
🙂
满意
😊
非常满意