一个示例

❓ redis中,set一个值,有效期为 3600 秒,这个值会什么时候释放?

常规理解为,在 3600 秒到期后,redis服务会自动清除,

也就意味着,redis需要有一个机制,每隔一个时间极短的时间段去扫描所有的key,判断是否到期并删除,这种开销是巨大的

过期删除

对于设置了过期时间的 key,删除有两个机制共同管理

✅ 惰性删除(访问时释放)

触发时机:当客户端访问该 key(如执行 GET、TTL、EXISTS 等命令)时。

行为:Redis 检测到该 key 已过期,立即物理删除该 key,释放内存,然后返回 nil。如果没被访问,即使过了 100 秒,key 仍可能留在内存中。