詹学伟
詹学伟
Published on 2024-04-05 / 0 Visits
0
0

Redis的内存淘汰策略

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版本后支持惰性删除+异步线程组合策略


Comment