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 | 所有键 | 随机删除 |