面试官:说说Redis的过期键删除策略吧高频)

划重点:Redis的过期键删除策略也是面试🐴中经常会被问的,我最近面试,被问到了📢好几次。在设置键的😀过期时间的同时,创建一个定时器,让定🐂时器在键的过期时间来临时,立即执行💕对键的删除操作。Redis使用的过期键删除策略

以下为知识DOC为大家进行整理的相关内容,希望对大家有所帮助!

面试官:说说Redis的过期键删除策略吧高❤️频)

划重点:Redis的过期键删除策略也是面试🐴中经常会被问的,我最近面试,被问到了📢好几次。

面试官 :说说Redis的过期键删除策略📢吧高频)

对于Redis服务器来说,内存资源非常🐖宝贵,如果一些过期键一直不被删除,就🐕会造成资源浪费,因此我们需要考虑一🔔个问题:如果一个键过期了,它什么时候❤️会被删除呢?

1. 常见的删除策略

常见的删🐅除策略有以下3种:

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

放任过期键⭐不管,每次从键空间中获取键时,检查该📌键是否过期,如果过期,就删除该键,如果🐴没有过期,就返回该键。

每隔一🐓段时间,程序对数据库进行一次检查,删🐅除里面的过期键,至于要删除哪些数据🐂库的哪些过期键,则由算法决定。

其中定🐒时ĺˆé™¤ĺ’Œ定期删除为主动ĺˆé™¤ç­–ç•ĽďźŒćƒ°đŸ–ć€§ĺˆé™¤ä¸şč˘ŤĺŠ¨ĺˆé™¤ç­–畼。

接下来我们一🐴一讲解。

1.1 定时删除策略

定时删除策略通🏹过使用定时器,定时删除策略可以保证🐻过期键尽可能快地被ĺˆé™¤ďźŒĺšśé‡Šć”žčż‡ćœŸđŸš€é”Žĺç”¨çš„ĺ†…ĺ­˜ă€‚

ĺ›ć­¤ďźŒ定时删除策略的优🐖缺点如下所示:

举个例子,如果有🐴大量的命令请求等待服务器处理,并且🎲服务器当前不缺少内存,如果服务器将🐖大量的CPU时间用来删除过期键,那么服务🐻器的响应时间和吞吐量就会受到影响。

🎷也就是说,如果服务器创建大量的定时🐓器,服务器处理命令请求的性能就会降🐖低,ĺ›ć­¤Redis目前并没有使用定时删除策略。

1.2 🐂惰性删除策略

惰性删除策略只会在获🐂取键时才对键进行过期检查,不会在ĺˆâ¤ď¸é™¤ĺ…śĺŽƒć—ĺ…łçš„čż‡ćœŸé”ŽčŠąč´ščż‡ĺ¤šçš„CPU时间。

🚀ĺ›ć­¤ďźŒ惰性删除策略的优缺点如下所示:

举个例子,如果数据库有很多的🔔过期键,而这些过期键又恰好一直没有❤️被访问到,那这些过期键就会一直占用❤️着宝贵的内存资源,造成资源浪费。

1说说删除.3 定期⭐删除策略

定期删除策略是定时删除策🚀略和惰性删除策略的一种整合折中方🐂案。

定期删除策略每隔一段时间执行一🚀次ĺˆé™¤čż‡ćœŸé”Žć“ä˝œďźŒĺšśé€ščż‡é™ĺˆśĺˆé™¤ć“đŸ–ä˝œć‰§čĄŒçš„ć—śé•żĺ’Œé˘‘çŽ‡ćĽĺ‡ĺ°‘ĺˆé™¤ć“ä˝œđŸ…寚CPU时间的影响,同时,通过定期删除过期🚩键,也有效地减少了ĺ›ä¸şčż‡ćœŸé”Žč€Œĺ¸ŚćĽđŸ’çš„ĺ†…ĺ­˜ćľŞč´šă€‚

2. Redis使用的过期键删除策略

Redis服🚀务器使用的是惰性删除策略和定期ĺˆđŸš€é™¤ç­–畼。

2.1 惰性删除策略的实现

过期键的😀惰性删除策略由函数实现,所有读写数🔔据库的Redis命令在执行之前都会调用函数🏹对输入键进行检查:

以上😀描述可以使用如下流程图表示:

面试官:🐖说说Redis的过期键删除策略吧高频)

2.2 定期删🐂除策略的实现

过期键的定期删除策略🐻由函数实现,每当Redis服务器的周期性操作⭐函数执行时,函数就会被调用,它在规定👅的时间内,分多次遍历服务器中的各个❤️数据库,从数据库的字典中随机检查一🐒部分键的过期时间,并ĺˆé™¤ĺ…śä¸­çš„čż‡ćœŸđŸš€é”Žă€‚

函数的大体流程为:

函数每次运行时,🐒都从一定数量的数据库中随机取出一📢定数量的键进行检查,并删除其中的过🐖期键,比如先从0号数据库开始检查,下次🐒函数运行时,可能就是从1号数据库开始❤️检查,直到15号数据库检查完毕,又重新从0😀号数据库开始检查,这样可以保证每个🎷数据库都被检查到。

划重点:

关于定期删💕除的大体流程,最近面试时有被问道,我🎷就是按上述描述回答的。

可能有的面试🐂官还会问,每次随机删除哪些key呢?可以提🐖下LRU算法Least Used最近最少使用),一般不会再细问,🐅不过有兴趣的同学可以深入研究下。

3. RDB对🐅过期键的处理3.1 生成RDB文件

在执行SAVE命令或📌者命令创建一个新的RDB文件时,程序会对⭐数据库中的键进行检查,已过期的键不🚩会被保存到新创建的RDB文件中。

举个例子,🔔如果数据库中包含3个键k1、k2、k3,并且k2已经过期,⭐那么创建新的RDB文件时,程序只会将k1和k3保🚩存到RDB文件中,k2则会被忽略。

3.2 载入RDB文件

在启🏹动Redis服务器时,如果服务器只开启了RDB持久🔔化,那么服务器将会载入RDB文件:

因为主从服务器在进行数据同步完🐴整重同步)的时候,从服务器的数据库会💕被清空,所以一般情况下,过期键对载入RDB🚀文件的从服务器不会造成影响。

4. AOF对过期🏹键的处理4.1 AOF文件写入

如果数据库中的某⭐个键已经过期,并且服务器开启了AOF持久🚩化功能,当过期键被惰性删除或者定期🐓ĺˆé™¤ĺŽďźŒç¨‹ĺşäźšĺ‘AOF文件追ĺŠä¸€ćĄDEL命令,显👅式记录该键已被ĺˆé™¤ă€‚

举个例子,如果客🐒户端执行命令GET 访问已经过期的键,那么👉服务器将执行以下3个动作:

4说说删除.2 AOF文件重写

在执🐕行AOF文件重写时,程序会对数据库中的键🐕进行检查,已过期的键不会被保存到重🐒写后的AOF文件中。

5.复制功能对过期键的处👅理

在主从复制模式下,从服务器的过期📌键删除动作由主服务器控制:

6说说删除. 源码及参考

黄👉健宏 《Redis设计与实现》

Java知音,专注于Java实用文章📢推送,不容错过

本文地址: https://www.zhishidoc.com/21723.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 859089669@qq.com 举报,一经查实,本站将立刻删除。

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022年10月23日 下午7:53
下一篇 2022年10月23日 下午7:56

相关推荐

  • 中国加油武汉加油说说|抗击疫情振奋人心的励志句子说说

    中华民族总能在灾难面前,不畏惧,不退缩,万众一心,众志成城,祝福武汉,祝福湖北,祝福中国!,最近的新闻看的很难过,愿早日战胜疫情,祖国越来越好望全国人民早日战胜病毒,度过难关,湖北加油20、团结一致,万众一心,早日战胜疫情,武汉加油,中国加油此时此刻,愿天佑中华,我们都是武汉人!30、愿早日战胜疫情,再看不了生离死别的故事,中国加油!,早日战胜病魔,全国人民心系湖北武汉,加油!

    2022年10月7日
    12200
  • 写自己生日的说说(30句)

    写自己生日的说说(30句)4、即使听到了你说的生日快乐,是否我就真的会快乐!6、今天我生日,初恋十二点打电话给我唱生日歌,突然好心酸!10、我18岁生日愿望是、希望苏苏永远开心幸福,早日找到自己的小路哥哥!写自己生日的说说14、每年的生日愿望都没有变,家人身体健康,没有很多烦心事~写自己生日的说说29、从来不和许多人一起闹哄哄地过生日。觉得生日不值得庆祝,也总觉得这是与别人不相干的事情。写自己生日的说说

    投稿 2022年10月29日
    11700
  • 男生网名

    简约好听有风格的男生网名昵称快乐不打烊适合帅哥使用的网名(200个)男生的网名好听又帅气(200个)13、為{幸葍干净受欢迎的男生网名时间高雅不俗的男生网名(100个)1.2.3.4.5.6.7.8.9.11.12.13.14.15.16.17.简单好听有味道的男生网名100个1.2.3.4.5.6.7.8.9.11.12.13.14.15.16.拥者不迷人又混蛋余生颓无言温柔南北有木有梦就别怕痛风流不羁桀骜的男生网名大全南风入弦

    2022年10月19日
    13400
  • 十二星座男生专属恶魔头像(十二星座专属唯美头像)

    在现在的网络生中,我们都喜欢用一个自己喜欢的头像,而现在的头像也是有很多种类的,下面我们就一起来看看十二星座专属唯美头像,巨蟹座文艺范十足,双子座让人心疼!金牛座专属唯美头像,小小的恶魔角特别的可爱,胸前白色的骷髅头图案特别的独特。摩羯座专属唯美头像,回头的那一刻,已经深深地吸引了我。巨蟹座专属唯美头像,女孩绝美的脸庞,大大的围巾,看起来文艺范十足。

    2022年10月20日
    20100
  • 《风会记得一朵花的香》之《奔跑的小狮子》好句摘抄及赏析

    赏析:写妈妈对她深深的爱,表现童年生活的美好,也与下文内容形成鲜明对比,表现母亲后来的变化“不正常”。赏析:“毫不留情”写出了妈妈迫切地想使女儿学会自己生活的本领。赏析:对妈妈的爱,女儿最初是没有感受到的,是《动物世界》中的故事让女儿恍然大悟。文章的结尾是本文的点睛之笔,升华了文章的主题,也点明母亲对女儿深深的爱。

    2022年10月24日
    21100

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注