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

面试官:说说Redis的过期键删除策略吧!划重点:Redis的过期键删除策略也是面试中经常会被问的,我最近面试,被问到了好几次。定时删除策略通过使用定时器,定时删除策略可以保证过期键尽可能快地被删除,并释放过期键占用的内存。惰性删除策略只会在获取键时才对键进行过期检查,不会在删❤️除其它无关的过期键花费过多的CPU时间。

以下为知识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/17148.html

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

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022年10月18日 上午12:30
下一篇 2022年10月18日 上午12:34

相关推荐

  • 晚上开车污疼痛疼

    晚上开车污疼痛疼原文:美服患人指,高明逼神恶?自笑平生为口忙,老来事业转荒唐。岂伊地气暖,自有岁寒心⑿。晚上开车污疼痛疼拼音解读:邻居回答说:“岔路太多了。这都是喝酒不节制惹的祸,不知道自己犯下多大过错。邹忌从比美的生活经验中深刻认识到一个统治者听到真话之不易。从她不时去看香炉里的瑞脑燃烧了多少(也即时间过去了多少)的细节中,读者可以感到她简直是度日如年。

    2022年11月13日
    9200
  • 小学生抗击疫情顺口溜.docx 4页

    冠状病毒感染强,飞沫传播最难防。网络冲浪学致富,为了疫后打基础。党的号令要宣扬,摸排上报要当先,消杀隔离是重点。防控通告要记牢,监测体温防发烧。古城人民真英豪,战胜疫情在今朝。解放军,战洪水,舍生忘死筑大堤。疫情还没掌握住,目前无法查病源。坚决打赢防疫战,天佑中华渡难关。不用怕,莫心慌,面对病毒别紧急。人心齐,泰山移,定把病毒都毁灭。疫情来势看似凶,你不出门它莫翔。

    投稿 2022年10月14日
    11500
  • 关于伤感的说说简短 一个人孤独抽烟的说说

    整理关于关于伤感的说说简短,你离开我之后,我永远不会问你爱我,只要你牵着她的手,就不再是我的英雄;没有人能控制你的情绪,只有你不让自己走,谁心里都没有故事,只是学会了控制。下面分享一个人孤独抽烟的说说整理了27条,希望能帮助到亲们!3、分手时应该是看不到对方,显示出一丝的思念都是廉价;你走了,不打扰是我最后的温柔。2022第一场雪简短伤感说说女生伤感说说冷酷短句

    2022年10月23日
    10500
  • 描写植物的现代诗大全【精选101句】

    15、描写植物的现代诗歌18、【描写植物的现代诗大全】《崩溃大陆》()RMB25左右23、《树》是现代诗人艾青于1940年春天创作的一首现代诗歌。26、冰心写的关于植物的现代诗有《嫩绿的芽儿》。38、【描写植物的现代诗大全】根,紧握在地下,叶,相触在云里。51、(彼岸的花)是冰心描写植物的现代诗。55、描写植物的现代诗歌有以下:57、作品赏析:一切事物都可以是诗人笔下文字的载体。

    投稿 2022年11月1日
    10900
  • 尿的组词 部编版二年级语文下册期末冲刺专项练习——字(多音字)

    四、判断下面加点字的读音。五、多音字辨析。六、下面加点字的读音相同的一项是()。2.老师经常给我讲题,这的确()提高了我的学习成绩。八、读短文,完成练习。1.我能写出加点字在文中的读音并组词。佛(fó)像,在文中读:尿的组词,组词:。长(chánɡ)江,在短文读:,组词:。相似(sì),在文中读:,组词:。部编版二年级语文下册期末冲刺专项练习——字(多音字)相关文章:

    2022年11月6日
    10000

发表回复

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