Redis过期策略设置是面试高频考点,深入理解三种数据清理机制是关键。本文详解定时删除、惰性删除和定期删除的底层原理,包括Redis如何通过expires字典管理过期key,以及生产环境配置技巧。掌握hz参数调优、maxmemory设置要点,避免内存泄漏和CPU突增问题。针对大Key过期阻塞、内存淘汰策略选择等实战场景提供解决方案,附带Redis 6.0源码分析笔记和故障排查checklist,帮助开发者优化Redis性能。2025年Java面试宝典已更新Redis高频面试题,助你轻松应对技术考察。
🔥 2025年Java面试宝典免费领:
👉 链接: https://pan.baidu.com/s/1RUVf75gmDVsg8MQp4yRChg?pwd=9b3g
提取码: 9b3g (最新Redis高频题已更新至第8章)
面试官问这个题时,表面考的是命令(比如EXPIRE key 60
),实际想听你讲三种过期数据清理机制的运作原理。以下是核心知识点:
实现方式:给每个过期key创建定时器,到期立即删除
优点:内存释放及时
致命缺点:CPU资源消耗过大(想象10万个key同时过期)
结论:Redis并未采用该策略
触发条件:客户端访问key时检查是否过期
# 伪代码逻辑
def get(key):
if key.ttl < now():
delete(key)
return null
return value
优点:CPU零开销
缺点:内存可能堆积大量"僵尸key"(长期不被访问的过期数据)
核心流程:
hz
参数控制扫描频率(默认10,即1秒10次)maxmemory-samples
控制采样数量生产环境必须调整的配置:
# redis.conf 关键参数
hz 20 # 提高扫描频率
maxmemory 4gb # 必须设置内存上限!
maxmemory-policy allkeys-lru # 内存不足时的淘汰策略
⚠️ 易错点:未设置maxmemory
时,即使配置了过期时间,Redis也不会自动触发内存淘汰!
| 策略类型 | 适用场景 | 风险点 | |----------------|-----------------------------------|-------------------------| | 惰性删除 | 读多写少业务(如缓存) | 内存泄露可能 | | 定期删除 | 高频写入业务(如实时计数) | CPU突增可能 | | 混合模式 | 90%的常规业务 | 需合理配置参数 |
📌 面试点睛:当面试官问“为什么设置了过期时间,内存还是爆了?” 大概率是定期删除扫描速度跟不上数据过期速度。
过期的秘密藏在expires字典里:
最近在用**面试鸭返利网**买面试会员省了25块,官方原价99的季度会员,通过返利网下单实付74。需要冲会员的同学可以戳这里👉 mianshiyafanli.com
🎁 本文关联资源包:
- Redis 6.0源码分析笔记
- 内存溢出故障排查checklist
在开头网盘链接的【/数据库优化/Redis】目录自取
(检查下你的redis.conf,maxmemory设好了吗?)
扫码联系我返利
(当前返利8元,金额随官方实际价格波动,最好提前咨询)
面试鸭小程序码
美团大额优惠券,给自己加个鸡腿吧!
今日有支付宝大红包赶快领,手慢无
支付宝扫码领取1-8元无门槛红包