Redis key 过期策略与 maxmemory 淘汰策略如何共同决定数据实际被删除的时机?
进阶版来源:tencent高级工程师Redis内存回收Redis maxmemory淘汰策略Redis key过期策略
草稿
答案解析
Redis 中,key 的过期策略和 maxmemory 淘汰策略是两套机制,分别解决“什么时候过期”和“内存不足时淘汰谁”。数据实际被删除,通常取决于这两套机制中哪个条件先触发。
过期策略主要有两种:
惰性删除 :访问一个 key 时,Redis 会先检查它是否已经过期。如果已过期,就删除并返回不存在。也就是说,设置了 TTL 不代表到点会立即删除,可能要等到下一次访问。 定期删除 :Redis 后台定期抽样检查设置了过期时间的 key,发现过期后删除。它不会一次扫描全部 key,而是控制每次执行的时间,避免影响主线程性能,所以定期删除也不是严格实时的。
因此,一个 key 到达过期时间后,可能暂时仍然存在于内存中,但逻辑上已经不可访问。只有在惰性删除或定期删除触发后,内存才会真正释放。对于过期 key 较多的情况,Redis 还会受到主动过期清理周期和执行时间限制的影响。
maxmemory 淘汰策略是在 Redis 使用内存达到上限后发挥作用。通常在执行写命令时,Redis 会检查内存是否超限,如果超限,就按照配置的淘汰策略删除 key,直到内
登录后查看完整内容
