Redis过期删除策略和内存淘汰策略
创始人
2025-05-28 14:34:28
0

目录

  • 一、面试题
  • 二、Redis内存满了怎么办
    • 2.1 结论
  • 三、redis里写的数据如何删除的?
    • 3.1 三种不同的删除策略
      • 3.1.1 立即删除
      • 3.1.2 惰性删除
      • 3.1.3 定期删除
      • 3.3.4 总结
  • 四、redis缓存淘汰策略
    • 4.1 有哪些
    • 4.2 你平时用哪一种
  • 五、总结

一、面试题

生产上你们你们的redis内存设置多少?
如何配置、修改redis的内存大小
如果内存满了你怎么办
redis清理内存的方式?定期删除和惰性删除了解过吗
redis缓存淘汰策略
redis的LRU了解过吗

二、Redis内存满了怎么办

1.查看Redis最大占用内存
打开redis配置文件,设置maxmemory参数,maxmemory是bytes字节类型,注意转换。
在这里插入图片描述
2.redis默认内存多少可以用?
在这里插入图片描述
3.一般生产上你如何配置?
一般推荐Redis设置内存为最大物理内存的四分之三
4.如何修改redis内存设置
通过修改文件配置
在这里插入图片描述
通过命令修改
在这里插入图片描述
5.什么命令查看redis内存使用情况?

info memory

6.真要打满了会怎么样?如果Redis内存使用超出了设置的最大值会怎样?
改改配置,故意把最大值设为1个byte试试
在这里插入图片描述
在这里插入图片描述

2.1 结论

1.设置了maxmemory的选项,假如redis内存使用达到上限
2.没有加上过期时间就会导致数据写满,maxmemory为了避免类似情况,引出内存淘汰策略

三、redis里写的数据如何删除的?

面试题
如果一个键是过期的,那它到了过期时间之后是不是马上就从内存中被被删除呢??

如果回答yes,立即删除,你自己走还是面试官送你?
如果不是,那过期后到底什么时候被删除呢??是个什么操作?

3.1 三种不同的删除策略

3.1.1 立即删除

Redis不可能时时刻刻遍历所有被设置了生存时间的key,来检测数据是否已经到达过期时间,然后对它进行删除。

立即删除能保证内存中数据的最大新鲜度,因为它保证过期键值会在过期后马上被删除,其所占用的内存也会随之释放。但是立即删除对cpu是最不友好的。因为删除操作会占用cpu的时间,如果刚好碰上了cpu很忙的时候,比如正在做交集或排序等计算的时候,就会给cpu造成额外的压力,让CPU心累,时时需要删除,忙死。。。。。。。
这会产生大量的性能消耗,同时也会影响数据的读取操作。

总结:对CPU不友好,用处理器性能换取存储空间

3.1.2 惰性删除

数据到达过期时间,不做处理。等下次访问该数据时,
如果未过期,返回数据 ;
发现已过期,删除,返回不存在。

惰性删除策略的缺点是,它对内存是最不友好的。

如果一个键已经过期,而这个键又仍然保留在redis中,那么只要这个过期键不被删除,它所占用的内存就不会释放。
在使用惰性删除策略时,如果数据库中有非常多的过期键,而这些过期键又恰好没有被访问到的话,那么它们也许永远也不会被删除(除非用户手动执行FLUSHDB),我们甚至可以将这种情况看作是一种内存泄漏–无用的垃圾数据占用了大量的内存,而服务器却不会自己去释放它们,这对于运行状态非常依赖于内存的Redis服务器来说,肯定不是一个好消息

3.1.3 定期删除

定期删除策略是前两种策略的折中:
定期删除策略每隔一段时间执行一次删除过期键操作,并通过限制删除操作执行的时长和频率来减少删除操作对CPU时间的影响。

周期性轮询redis库中的时效性数据,采用随机抽取的策略,利用过期数据占比的方式控制删除频度
特点1:CPU性能占用设置有峰值,检测频度可自定义设置
特点2:内存压力不是很大,长期占用内存的冷数据会被持续清理
总结:周期性抽查存储空间 (随机抽查,重点抽查)

举例:

redis默认每个100ms检查,是否有过期的key,有过期key则删除。注意:redis不是每隔100ms将所有的key检查一次而是随机抽取进行检查(如果每隔100ms,全部key进行检查,redis直接进去ICU)。因此,如果只采用定期删除策略,会导致很多key到时间没有删除。

定期删除策略的难点是确定删除操作执行的时长和频率:如果删除操作执行得太频繁,或者执行的时间太长,定期删除策略就会退化成立即删除策略,以至于将CPU时间过多地消耗在删除过期键上面。如果删除操作执行得太少,或者执行的时间太短,定期删除策略又会和惰性删除束略一样,出现浪费内存的情况。因此,如果采用定期删除策略的话,服务器必须根据情况,合理地设置删除操作的执行时长和执行频率。

定期抽样key,判断是否过期
漏网之鱼

3.3.4 总结

Redis服务器实际使用的是惰性删除和定期删除两种策略:通过配合使用这两种删除策略,服务器可以很好地在合理使用CPU时间和避免浪费内存空间之间取得平衡。

1 定期删除时,从来没有被抽查到
2 惰性删除时,也从来没有被点中使用过
上述2步骤======> 大量过期的key堆积在内存中,导致redis内存空间紧张或者很快耗尽

四、redis缓存淘汰策略

4.1 有哪些

  • noeviction: 不会驱逐任何key
  • allkeys-lru: 对所有key使用LRU算法进行删除
  • volatile-lru: 对所有设置了过期时间的key使用LRU算法进行删除
  • allkeys-random: 对所有key随机删除
  • volatile-random: 对所有设置了过期时间的key随机删除
  • volatile-ttl: 删除马上要过期的key
  • allkeys-lfu: 对所有key使用LFU算法进行删除
  • volatile-lfu: 对所有设置了过期时间的key使用LFU算法进行删除

总结一下怎么记住这8个
2 * 4 得8
2个维度

过期键中筛选
所有键中筛选

4个方面

LRU
LFU
random
ttl

4.2 你平时用哪一种

平常使用allkeys-lru
系统默认的是noeviction
在这里插入图片描述

五、总结

  • Redis 使用的过期删除策略是「惰性删除+定期删除」,删除的对象是已过期的 key。

  • 内存淘汰策略是解决内存过大的问题,当 Redis 的运行内存超过最大运行内存时,就会触发内存淘汰策略

相关内容

热门资讯

测试经理简历 测试经理简历模板  招聘者在对个人简历的审核上就是通过个人简历中你所体现出来的技能,让他们看到你的能...
应聘简历自我介绍 应聘简历自我介绍(精选10篇)  当来到一个陌生的地方时,我们不得不需要向他人介绍自己,自我介绍可以...
杜玉堂的简历 -管理资料 个人概况姓名:杜玉堂 性别:男 籍贯:山东曹县政治面貌:党员 学历:硕士 专业:细胞生物学 毕业院校...
数学教师个人简历(履历表)模... 个人基本资料姓  名出生日期1977-11-07性  别男婚姻状况未婚身  高170厘米体  重68...
简历特长爱好怎么写 简历特长爱好怎么写  简历特长爱好怎么写,往往的情况下面,我们会把简历中的特长和爱好写在同一个板块中...
应届生个人简历 应届生个人简历(精选10篇)  个人简历是求职者给招聘单位发的一份简要介绍。下面是小编收集整理的应届...
个人简历自荐信 个人简历自荐信范文(精选10篇)  导语:在如今这个时代,我们越来越经常使用自荐信,我们在写自荐信的...
新员工入职简历表 新员工入职简历表  时间一晃而过,眼见着,找工作的时间马上到来,让我们一起来学习写简历吧。简历怎么写...
个人简历的自我评价怎么写 个人简历的自我评价怎么写本人性格开朗、稳重、有活力,待人热情、真诚;工作认真负责,积极主动,能吃苦耐...
社区工作者空白个人简历表格下... 该内容已删除或未通过审核,请返回首页浏览其它页面,感谢你的理解,谢谢。
美术教师招聘简历模板免费下载   美术:泛指创作占有一定平面或空间,且具有可视性的艺术,就叫作美术。它的划分有多种,一般地包括四大...
护士个人简历封面 护士个人简历封面  如何撰写自己的简历,让招聘决策者过目不忘并留下深刻印象,从而为你带来面试机会,是...
服装设计师简历 服装设计师简历  求职者要想求职成功必须要能写出一份优秀的个人简历来,要如何写好简历呢?下面公文站小...
最新简历个人评价   个人评价相信大家都接触到,工作过程中自我评价切记长篇大论,以下这篇是小编整理的“最新简历个人评价...
研究生个人简历 研究生个人简历范文  求职简历求职中,个性突出、特征鲜明的求职者容易在竞争中取胜,而简历也需要个性突...
护士求职个人简历表格   CN人才网小编给大家整理的一篇护士求职个人简历表格,一起来看看吧。姓 名:xxxx 性 别: 男...
应聘个人简历自我介绍 应聘个人简历自我介绍范文(精选5篇)  来到一个完全陌生的环境,我们通常会被要求作自我介绍,自我介绍...
个人的简历word格式 个人的简历范本word格式  时间过得飞快,前方等待着我们的将是新的工作机会和挑战,你的简历写好了吗...
平面设计师个人简历 平面设计师个人简历(精选7篇)  时间过得可真快,从来都不等人,我们找工作的时间越来越近,这时候需要...