【Java面试题】Redis key过期了,为什么内存没释放?

本文解释了Redis中的Key过期机制,包括定期删除和惰性删除,导致过期Key不会立即释放内存,只有在定期清理或访问时才执行删除。作者提供了Java面试问题背景和相关资源链接。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

“Redis key过期了,为什么内存没释放?”

大家好,我是Mic,一个工作了14年的Java程序员

一个工作4年的程序员去某互联网公司面试,被问到了这个问题。

如果大家不知道这个问题该怎么回答,可以扫描文章尾端二维码领取我整理的50W字的大厂面试指南。

问题分析

在Redis中,Key的过期清理是通过使用定期删除和惰性删除这两种机制来实现的。

  • 定期删除是指Redis会每隔一段时间执行一次定期删除操作。在每次执行定期删除时,Redis会随机抽取一部分Key,并检查它们是否过期。如果发现有过期的Key,删除key并释放相应的内存空间。这种机制保证了Redis能够定期清理过期的Key,但并不保证所有过期的Key都会被立即清理。

  • 惰性删除是指当一个Key被访问时,Redis会检测Key是否过期。过期则删除并释放相应的内存空间。

了解了Redis中的key过期策略,就可以知道这个问题该怎么回答了,下面看一下这个问题的回答。

问题解答

当Redis中的Key过期时,虽然这个Key在逻辑上已经过期了,但是Redis并不会立即释放对应的内存空间

由于Redis采用了定期删除和惰性删除的方式来清理key,这两种机制意味着Redis的key过期清理并不是实时的。

所以即使Key过期了,Redis不会立即清理它们,只有在执行定期删除或访问时才会进行清理操作。

因此,一些过期的Key可能会在一段时间内仍然存在于Redis中,直到触发了相应的清理机制才会被删除和释放内存。

总结

大家知道怎么回答了吗?

如果你喜欢我的作品,记得点赞收藏加关注哦!!!

另外,我将所有Java面试系列制作成了完整的面试文档。它的便捷之处在于,可以通过检索的方式,找到你想要的面试题,目前总计超过50W字!

【想领取面试文档的小伙伴可以点击文章底部名片无套路免费赠送给大家!】

需要面试宝典、大厂面试文档的小伙伴可以扫描下方二维码
↓↓↓↓↓↓↓↓↓↓↓↓↓

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

跟着Mic学架构

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值