Redis 过期策略 和 淘汰策略
原创转载请注明出处:https://www.cnblogs.com/agilestyle/p/15654570.html
过期策略
定时删除
在设置 key 的过期时间的同时,创建一个定时器,让定时器在 key 的过期时间来临时,立即执行对 key 的删除操作。
惰性删除
适用于 很多的 key 可能会到了过期时间还没有进行删除的情况。
放任 key 过期不管,但是每次从键空间中获取 key 时,都检查取得的 key 是否过期,如果过期的话,就删除该 key;如果没有过期,就返回该 key 。
定期删除
每隔一段时间程序就对数据库进行一次检查,删除里面的过期的 key 。至于要删除多少过期的 key ,以及要检查多少个数据库,则由算法决定。
回收策略
使用策略规则:
- 如果数据呈现幂律分布,也就是一部分数据访问频率高,一部分数据访问频率低,则使用 allkeys-lru
- 如果数据呈现平等分布,也就是所有的数据访问频率都相同,则使用 allkeys-random
allkeys-lru
当内存不足以容纳新写入数据时,在键空间中,移除最近最少使用的 key
allkeys-random
当内存不足以容纳新写入数据时,在键空间中,随机移除某个 key
volatile-lru
当内存不足以容纳新写入数据时,在设置了过期时间的键空间中,移除最近最少使用的 key
volatile-ttl
当内存不足以容纳新写入数据时,在设置了过期时间的键空间中,有更早过期时间的 key 优先移除
volatile-random
当内存不足以容纳新写入数据时,在设置了过期时间的键空间中,随机移除某个 key
no-eviction
当内存不足以容纳新写入数据时,新写入操作会报错
强者自救 圣者渡人