首页/数据/数据库速查/8 种淘汰策略(maxmemory-policy)
Redis 运维与场景124 条

8 种淘汰策略(maxmemory-policy)

常用三条线:不淘汰(noeviction)、在所有键里淘汰(allkeys-*)、只在设过期的键里淘汰(volatile-*);LRU/LFU/random/ttl 决定选谁。

数据库速查数据更新于 2026-10-12

策略

策略淘汰范围选择依据
noeviction不淘汰写满即报错(缓存+持久数据场景慎用)
allkeys-lru所有键最久未访问
allkeys-lfu所有键访问频率最低(4.0+)
allkeys-random所有键随机
volatile-lru仅设过期键最久未访问
volatile-lfu仅设过期键频率最低
volatile-random仅设过期键随机
volatile-ttl仅设过期键剩余 TTL 最小

设置与查看

设置与查看
CONFIG GET maxmemory-policy
CONFIG SET maxmemory-policy allkeys-lru
# 纯缓存建议 allkeys-lru / allkeys-lfu;
# 缓存+持久数据混布建议 volatile-*(防止误删持久键)
volatile-* 的坑:键没设过期就不会被淘汰,内存打满后依然 OOM;纯缓存场景直接用 allkeys-*。

易错点

  • volatile-lru 但大量键没过期:内存满后写全部失败
  • 把 noeviction 用在纯缓存:缓存写不进去,业务报错雪崩

数据来源与参考

  • Redis 官方文档: maxmemory-policy
  • Redis 官方文档: 键淘汰

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌