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

当内存不足以容纳新写入数据时,新写入操作会报错

强者自救 圣者渡人
原文地址:https://www.cnblogs.com/agilestyle/p/15654570.html