在 Redis 4.0 之前和之后,Redis 的内存淘汰策略没有发生显著的变化,但在 4.0 版本之后引入了一种新的内存淘汰策略,即 MEMKIND_LFU
。
Redis 4.0 之前的内存淘汰策略:
1. volatile-lru
和 allkeys-lru
:
volatile-lru
使用 Least Recently Used(LRU)算法淘汰带有过期时间的 key。allkeys-lru
使用 LRU 算法淘汰所有 key。
2. volatile-ttl
:
volatile-ttl
根据 Time To Live(TTL)淘汰带有过期时间的 key。
3. volatile-random
和 allkeys-random
:
volatile-random
随机淘汰带有过期时间的 key。allkeys-random
随机淘汰所有 key。
4. noeviction
:
noeviction
表示当内存不足以执行写入操作时,拒绝写入而不进行淘汰。
Redis 4.0 引入的新内存淘汰策略:
1. MEMKIND_LFU
:
MEMKIND_LFU
是一种 Least Frequently Used(LFU)算法,用于淘汰最不经常使用的 key。
示例配置:
# Redis 4.0 之前的配置
maxmemory 100M
maxmemory-policy allkeys-lru
# Redis 4.0 引入新策略
maxmemory 100M
maxmemory-policy MEMKIND_LFU
请注意,具体可用的策略可能因 Redis 版本和构建选项而有所不同。建议查阅官方文档或相应版本的 release notes 以获取详细信息。