Redis-过期与淘汰策略
2026年10月16日·Admin·1 次浏览
Redis 键过期与内存淘汰
过期键的删除策略
Redis 不会到点立刻删除所有过期键,而是组合使用:
| 策略 | 说明 |
|---|---|
| 惰性删除 | 客户端访问 key 时检查是否过期,过期则删除并返回空。 |
| 定期删除 | 周期性随机抽查一批 key,删除其中已过期的,减轻内存压力。 |
因此过期 key 可能短暂残留,直到被访问或被定期任务抽到。
内存不足时:maxmemory 与淘汰策略
配置 maxmemory 后,写入可能触发淘汰(maxmemory-policy),常见:
| 策略 | 含义 |
|---|---|
| noeviction | 不淘汰,写满报错(默认需显式配) |
| allkeys-lru | 从所有 key 里 LRU 淘汰 |
| volatile-lru | 仅从设了过期时间的 key 里 LRU |
| allkeys-random / volatile-random | 随机淘汰 |
| volatile-ttl | 优先淘汰 TTL 更短的 |
| volatile-lfu / allkeys-lfu(4.0+) | 按访问频率 |
根据业务选:缓存全可丢可用 allkeys-lru;有持久键慎用会删全局 key 的策略。