Redis内存淘汰策略解析
一、触发条件
当Redis内存达到maxmemory配置阈值时触发淘汰机制(默认不启用)
二、8种核心策略
1. 不淘汰策略
noeviction(默认):拒绝写入新数据,读请求正常响应
2. 全体键淘汰
allkeys-lru:全体键中淘汰最近最少使用的
allkeys-lfu:全体键中淘汰使用频率最低的(4.0+)
allkeys-random:全体键随机淘汰
3. 过期键淘汰
volatile-lru:仅淘汰设置了TTL的键(LRU算法)
volatile-lfu:仅淘汰设置了TTL的键(LFU算法)
volatile-random:过期键中随机淘汰
volatile-ttl:优先淘汰剩余存活时间最短的键
三、算法原理对比
策略类型 时间复杂度 适用场景
LRU O(1) 热点数据集中
LFU O(1) 访问频率稳定
TTL O(N) 时效性敏感数据
四、配置建议
生产环境建议使用allkeys-lru或volatile-lru
LFU策略需配合maxmemory-samples参数调整采样精度
监控evicted_keys指标观察淘汰情况
五、注意事项
实际内存可能短暂超过maxmemory限制
集群模式下每个节点独立执行淘汰
6.0版本后支持惰性删除+异步线程组合策略