Redis的内存淘汰策略
Redis 的内存淘汰策略主要是在内存使用接近 maxmemory 限制时触发,用于决定哪些数据需要被删除以释放空间。常见的策略有以下 8 种:
- noeviction - 默认策略,当内存不足时,不会删除任何数据,而是直接返回错误(通常是写入命令报错)。
- 适合对数据完整性要求高的场景。
 
- volatile-lru - 从设置了过期时间的键中,使用 LRU(Least Recently Used,最近最少使用) 算法淘汰数据。
 
- volatile-lfu - 从设置了过期时间的键中,使用 LFU(Least Frequently Used,最少使用频率) 算法淘汰数据。
 
- volatile-random - 从设置了过期时间的键中,随机删除一些键。
 
- volatile-ttl - 从设置了过期时间的键中,优先删除剩余生存时间(TTL)最短的键。
 
- allkeys-lru - 从所有键中,使用 LRU 算法淘汰数据。
 
- allkeys-lfu - 从所有键中,使用 LFU 算法淘汰数据。
 
- allkeys-random - 从所有键中,随机删除一些键。
 
| 策略名称 | 作用范围 | 淘汰规则 | 
|---|---|---|
| noeviction | 无 | 不删除数据,直接返回错误 | 
| volatile-lru | 仅过期键 | 最近最少使用(LRU) | 
| volatile-lfu | 仅过期键 | 最少使用频率(LFU) | 
| volatile-random | 仅过期键 | 随机删除 | 
| volatile-ttl | 仅过期键 | TTL 最短优先 | 
| allkeys-lru | 所有键 | 最近最少使用(LRU) | 
| allkeys-lfu | 所有键 | 最少使用频率(LFU) | 
| allkeys-random | 所有键 | 随机删除 | 
