当前位置:网站首页>面试官:Redis中过期的key是怎么被删除的?
面试官:Redis中过期的key是怎么被删除的?
2022-08-04 20:21:00 【51CTO】

介绍
我们可以给Redis中的key设置过期时间,那么当key过期了,它在什么时候会被删除呢?
如果让我们写Redis过期策略,我们会想到如下三种方案
- 定时删除,在设置键的过期时间的同时,创建一个定时器。当键的过期时间来临时,立即执行对键的删除操作
- 惰性删除,每次获取键的时候,判断键是否过期,如果过期的话,就删除该键,如果没有过期,则返回该键
- 定期删除,每隔一段时间,对键进行一次检查,删除里面的过期键
定时删除策略对CPU不友好,当过期键比较多的时候,Redis线程用来删除过期键,会影响正常请求的响应
惰性删除读CPU是比较有好的,但是会浪费大量的内存。如果一个key设置过期时间放到内存中,但是没有被访问到,那么它会一直存在内存中
定期删除策略则对CPU和内存都比较友好
Redis中key的过期策略
redis过期key的删除策略选择了如下两种
- 惰性删除
- 定期删除
惰性删除
客户端在访问key的时候,对key的过期时间进行校验,如果过期了就立即删除
定期删除
Redis会将设置了过期时间的key放在一个独立的字典中,定时遍历这个字典来删除过期的key,遍历策略如下
- 每秒进行10次过期扫描,每次从过期字典中随机选出20个key
- 删除20个key中已经过期的key
- 如果过期key的比例超过1/4,则进行步骤一
- 每次扫描时间的上限默认不超过25ms,避免线程卡死
因为Redis中过期的key是由主线程删除的,为了不阻塞用户的请求,所以删除过期key的时候是少量多次。源码可以参考expire.c中的activeExpireCycle方法
为什么要了解redis过期key的删除策略?
只有一个目的,让你知道设置key的过期时间为一个随机范围,不能都在同一时间过期,不然频繁的扫描过期字典会造成客户端的请求出现卡顿
参考博客
《Redis深度历险》老钱
边栏推荐
- 如何进行AI业务诊断,快速识别降本提效增长点?
- win10 uwp 修改图片质量压缩图片
- Using Baidu EasyDL to realize forest fire early warning and identification
- A complete cross-compilation environment records the shell scripts generated by peta
- The difference between Client Side Cache and Server Side Cache
- In July 2022, domestic database memorabilia
- jMeter Thread group 对应的 constant timer
- 搭建MyCat2一主一从的MySQL读写分离
- C语言基础[通俗易懂]
- About the state transfer problem of SAP e-commerce cloud Spartacus UI SSR
猜你喜欢

How to carry out AI business diagnosis and quickly identify growth points for cost reduction and efficiency improvement?

新式茶饮,卷完水果还能卷什么?

C#弹出询问对话框

Go study notes (Part 1) Configuring the Go development environment
Force KouTi (5), the longest text string back

ts集成和使用

「 WAIC 2022 · 黑客马拉松」蚂蚁财富两大赛题邀你来战!

【CAS:2306109-91-9 |胺-PEG4-脱硫生物素】价格

The list of Kubernetes - watch mechanism

2022年国内手机满意度榜单:华为稳坐国产品牌第一
随机推荐
小软件大作用 | 如何省时省力进行Gerber图层快速对比?
搭建MyCat2一主一从的MySQL读写分离
To -.-- -..- -
c sqlite...
Win10 uwp use ScaleTransform magnify an element
刷题-洛谷-P1307 数字反转
如果是测试 axi dma抓数的话 看这里
Apache服务器的配置[通俗易懂]
C语言——青蛙跳台阶(递归)
run command for node
vehemently condemn
How to promote the implementation of rural revitalization
About the state transfer problem of SAP e-commerce cloud Spartacus UI SSR
Order of lds links
Zero-knowledge proof notes - private transaction, pederson, interval proof, proof of ownership
【AGC】构建服务1-云函数示例
使用 Allatori 进行 Jar 包混淆
数据安全解决方案的发展
构建Buildroot根文件系统(I.MX6ULL)
【有奖征文】秋招特训,打造你的专属产品体验