公众号:架构师与哈苏
关注公众号进入it交流群! 公众号:架构师与哈苏 不定时都会推送一些实用的干货。。。

过期键删除策略

1.定时删除:在设置键的过期时间的同时,创建一个定时器timer,让定时器在键过期时间来临时,立即执行对键的删除操作。

2.惰性删除:放任键过期不管,但是每次从键空间中获取键时,都检查取得的键是否过期,如果过期的话,就删除该键;如果没有过期,就返回改建。

3.定期删除:每隔一段时间程序就对数据库进行一次检查,删除里面的过期键,至于要删除多少过期键,以及要检查多少个数据库,则有算法决定。

Redis服务器使用的是惰性删除策略和定期删除策略。

六种淘汰策略

  • noeviction: 不删除策略,达到最大内存限制时,如果需要更多内存,直接返回错误信息。

  • allkeys-lru: 所有key通用;优先删除最近最少使用(less recently used,LRU)的key。

  • volatile-lru: 只限于设置expire的部分;优先删除最近最少使用(less used,LRU)的key。

  • allkeys-random: 所有key通用; 随机删除一部分key。

  • volatile-random: 只限于设置了expire的部分;随机删除一部分key。

  • volatile-ttl: 只限于设置expire的部分; 优先删除剩余时间(time to live,TTL)短的key。

使用策略规则:

  1. 如果数据呈现幂律分布,也就是一部分数据访问频率高,一部分数据访问频率低,则使用allkeys-lru
  2. 如果数据呈现平等分布,也就是所有的数据访问频率都相同,则使用allkey
posted on 2021-08-18 15:37  公众号/架构师与哈苏  阅读(85)  评论(0编辑  收藏  举报