Redis的键过期是如何删除的?【面试高频】

大家好,这里是程序员阿亮。这一次咱们来聊一下Redis的键过期是如何处理的

前言

当我们Redis的key设置了过期时间,很多人会疑问,Redis是如何进行过期key的删除操作的,其实,Redis为了保证高可用和高性能,在这一步也做了很多的优化。

Redis的key过期又有俩种,一种是主动过期,一种是被动过期。

一、被动过期

当我们去访问一个key,发现这个key已经过期了,那么Redis会马上删除这个key,这就很简单了,就不过多解释了。

当然仅仅靠着这个主动删除是不够的,如果有一些key已经不会被访问,那么就会积压在内存中,所以Redis会主动去处理它们,那就可以考虑到主动过期了。

二、主动过期

主动过期的策略

Redis 在后台每秒执行 10 次(即每 100ms 一次)的定时任务,每次执行以下步骤:

1. 随机采样

从设置了过期时间的 key 集合(expires dict)中,随机抽取最多 20 个 key

2. 检查是否过期

对这 20 个 key 逐一检查当前时间是否超过其过期时间。

3. 删除过期 key

删除所有已过期的 key。

4. 动态调整采样频率
  • 如果本次采样中过期 key 的比例 ≥ 25% ,说明还有很多过期 key 没删完 → 立即重复执行上述过程(递归),直到比例 < 25% 或达到最大执行时间(防止阻塞主线程)。
  • 这种设计既保证了效率,又避免过度消耗 CPU。

注意:为避免阻塞主线程,每次主动过期操作的总耗时不能超过 25ms(Redis 6+ 版本有更精细的限制)。


总结

所以Redis不保证key一过期就马上删除,因为惰性删除是要等到下一次访问才能删除,而我们的主动删除则为了低延迟和采用轮询方式,并且时长有限定,所以不能马上删除过期key。

相关推荐
怕浪猫3 小时前
第 1 章 FDE的崛起
面试
zlwool5 小时前
图纸管理选型避坑指南
数据库·erp·设备erp·非标机械
智购科技无人售货机厂家5 小时前
2026自动售货机制冷系统维护指南:从散热器清洁到压缩机换油的工程实践~YH
运维·redis·物联网·缓存·架构
EXI-小洲5 小时前
Java 操作 Word:字符串替换、图片插入、动态生成表格与API接口下载
java·开发语言·spring boot·word
小灰灰搞电子6 小时前
完全驾驭 Qt 与数据库:C++ ORM 框架 QxOrm 原理与实践指南
数据库·c++·qt
2601_961901706 小时前
SpringBoot使用Nacos进行application.yml配置管理
java·spring boot·spring
何以解忧,唯有..7 小时前
LangChain 工具调用(Tool Calling)实战指南
java·前端·langchain
QQ_21696290967 小时前
【源码编号:project79475】SpringBoot校内二手交易平台:商品发布、分类检索、留言交流、订单管理全流程实战
java·spring boot·后端
软件聚导航8 小时前
「聚小软 AI 助手」技术升级:从数据库检索到 RAG 知识库问答
前端·数据库·mysql·微信小程序·小程序·ai编程·rag
学习星球8 小时前
单调栈——从“找下一个更大的“到柱状图中的最大矩形
数据库·c++·算法·leetcode·xcode