Redis过期策略与内存淘汰机制深度解析:掌握惰性删除与定期删除的核心原理,了解LRU、LFU等8种内存淘汰策略的适用场景。2025年Java面试必备知识点,涵盖Redis内存管理、性能优化及高频考点。通过面试鸭返利网购买会员可享25元返利,获取最新Java面试宝典及Redis实战技巧,提升面试通过率。学习Redis如何平衡CPU与内存效率,解决内存泄露问题,优化缓存性能,助力开发者应对大厂技术面试挑战。
大家好,我是程序员老王。Redis作为面试中的高频考点,尤其是它的过期策略和内存淘汰机制,几乎是中高级岗位必问的内容。今天咱们就来深入聊聊这两个核心机制,让你在面试时对答如流。
📁 2025年最新Java面试宝典网盘地址: 点击下载《2025 Java面试宝典》 提取码: 9b3g
我们知道Redis可以给键设置TTL(生存时间),那时间到了之后,Redis是如何处理这些过期的键的呢?这就涉及到它的过期策略了。Redis主要采用两种策略结合的方式:
惰性删除 (Lazy Expiration):
GET
, HGET
, SET
等),先检查该键的过期时间。如果过期了,立刻删除这个键,然后才执行命令(对于读命令,返回nil)。定期删除 (Periodic Expiration):
总结一下Redis的过期策略: 它是惰性删除
+ 定期删除
的组合拳。惰性删除
是被动触发,定期删除
是主动抽样清理。两者结合是性能和内存使用的一个折中方案。但要注意,过期策略本身并不能保证在内存用满时自动清理数据! 这就是内存淘汰机制
要解决的问题了。
当Redis的内存使用达到配置的最大值 maxmemory
时,再写入新数据就会触发内存淘汰机制。这时Redis会按照配置的策略,删除一些键,腾出空间给新数据。Redis提供了8种淘汰策略(Redis 6.0及以上),通过 maxmemory-policy
配置:
(error) OOM command not allowed when used memory > 'maxmemory'
)。适用于对数据一致性要求极高的场景,但风险是服务可能不可写。LRU算法
(最近最少使用)淘汰最近最久未被使用的键。LRU算法
淘汰最近最久未被使用的键。LFU算法
(最不经常使用)淘汰访问频率最低的键(Redis 4.0+)。LFU算法
淘汰访问频率最低的键(Redis 4.0+)。allkeys-lru
或 volatile-lru
。allkeys-lfu
或 volatile-lfu
。volatile-ttl
。allkeys-random
或 volatile-random
是个简单选择。noeviction
(需有完善的监控和告警)。allkeys-
vs volatile-
): 关键在于你是否只想淘汰那些明确会过期的数据。如果没设置过期时间的键也很重要,避免被淘汰,就用 volatile-*
;如果所有键都可以作为淘汰候选,就用 allkeys-*
。一般建议使用 allkeys-*
策略,除非你对永不过期键有特别保护需求。面试官:“能详细解释下Redis的过期策略和内存淘汰机制吗?”
你可以这样组织答案:
设置了TTL的键如何被自动删除
的问题;内存淘汰机制解决的是Redis内存达到上限后如何继续写入新数据
的问题。”惰性删除
,当客户端访问一个键时,Redis会检查它是否过期,过期就删。第二是定期删除
,Redis默认每秒执行10次,每次随机抽取一批(比如20个)设了过期的键,删掉其中已过期的。如果这批键过期的比例超过25%,它会继续抽下一批,直到比例低于25%才停。这种组合是为了平衡CPU和内存的使用效率,但无法保证所有过期键都被及时清理。”maxmemory
限制时,就需要内存淘汰机制
来腾空间了。”maxmemory-policy
配置:
noeviction
:默认,内存满就报错不写入。allkeys-lru
/ volatile-lru
:在所有键/有过期时间的键中,淘汰最近最少用的(LRU)。allkeys-lfu
/ volatile-lfu
:淘汰访问频率最低的(LFU)。allkeys-random
/ volatile-random
:随机淘汰。volatile-ttl
:淘汰过期时间最短的。
(可简要提下allkeys和volatile前缀的区别)”allkeys-lru
,因为我们的数据访问模式比较符合‘最近用过的以后也更可能用’,且没有需要绝对保护的永不过期键。同时我们也会监控内存使用,避免频繁淘汰影响性能。”面试准备离不开高质量的资料!我为大家整理了一份2025年最新Java面试宝典,包含了各大厂核心考点、高频真题解析、架构设计、性能优化、Redis深度实践等硬核内容:
📁 立即获取面试宝典: 点击下载《2025 Java面试宝典》 提取码: 9b3g
还在为刷题买会员发愁? 有个省钱妙招!如果你需要购买面试鸭会员,强烈推荐通过 面试鸭返利网 (mianshiyafanli.com) 来找我下单。通过这个渠道购买,可以享受高达25元的返利优惠!用更低的成本获取海量面试题库资源,性价比超高。点击下方链接直达:
[
面试鸭小程序码
美团大额优惠券,给自己加个鸡腿吧!
今日有支付宝大红包赶快领,手慢无
支付宝扫码领取1-8元无门槛红包