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

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

 

posted @ 2021-12-07 10:05  李白与酒  阅读(59)  评论(0编辑  收藏  举报