1.Redis 过期删除策略
1)惰性删除
:放任键过期不管,但是每次从键空间中获取键时,都检查取得的键是否过期,如果过期的话,就删除该键;如果没有过期,就返回该键。
2)定期删除
:每隔一段时间程序就对数据库进行一次检查,删除里面的过期键。至于要删除多少过期键,以及要检查多少个数据库,则由算法决定。
2.内存淘汰策略
Redis 内存数据集大小上升到一定大小的时候,就会施行数据淘汰策略。
Redis 提供 8 种数据淘汰策略:
LRU
全称Least recently used,意思为淘汰掉最久未使用(即最老
)的一条数据;
LFU
全称Least-frequently used,意思为淘汰掉过去被访问
次数最少
的一条数据
1.全局的键空间选择性移除
- noeviction:当内存不足以容纳新写入数据时,新写入操作会报错。
- allkeys-lru:当内存不足以容纳新写入数据时,在键空间中,移除最近最少使用的key。(
这个是最常用的
) - allkeys-random:当内存不足以容纳新写入数据时,在键空间中,随机移除某个key。
2.设置过期时间的键空间选择性移除
- volatile-lru:当内存不足以容纳新写入数据时,在设置了过期时间的键空间中,移除最近最少使用的key。(
只针对设置过期的keys
) - volatile-random:当内存不足以容纳新写入数据时,在设置了过期时间的键空间中,随机移除某个key。
- volatile-ttl:当内存不足以容纳新写入数据时,在设置了过期时间的键空间中,有更早过期时间的key优先移除。
3.(4.0及以上版本可用)
- allkeys-lfu:从所有数据中根据 LFU 算法挑选数据淘汰
- volatile-lfu:从设置了过期时间的数据中根据 LFU 算法挑选数据淘汰