MST

星途 面试题库

面试题:Redis AOF 中对过期键处理机制的基本原理是什么

请简要阐述 Redis AOF 对过期键处理的基本流程及原理,包括何时检测过期键、如何在 AOF 文件中体现过期键的状态变更等。
22.8万 热度难度
数据库Redis

知识考点

AI 面试

面试题答案

一键面试

1. 何时检测过期键

  • 读写操作时:当执行读(如 GET)或写(如 SET)等命令操作键时,Redis 会先检查该键是否过期。如果键已过期,读操作会返回 nil,写操作则正常执行(会覆盖过期键)。这确保了对过期键的访问不会返回错误数据,同时也保证新数据写入不受过期状态影响。
  • 定期删除:Redis 内部有一个定期删除策略,会定期随机抽取一部分键进行过期检查并删除过期键。这有助于及时释放内存,避免过期键长期占用内存资源。

2. AOF 文件中过期键状态变更体现

  • AOF 重写:在 AOF 重写过程中,过期键不会被写入新的 AOF 文件。因为重写是基于当前数据库状态生成一个简化且有效的 AOF 文件,过期键已经不在数据库中,所以不会被包含。例如,原 AOF 文件中有 SET key value 及后续过期相关指令,重写时若 key 已过期,则新 AOF 文件不会包含 key 相关指令。
  • 正常写入:当键过期时,不会在 AOF 文件中专门记录键过期这一事件。因为 AOF 文件记录的是命令,当键过期后,后续对该键的操作(如读操作返回 nil),实际执行的命令并没有改变(还是 GET key),只是返回结果不同。所以 AOF 文件按正常命令记录,从命令执行及返回结果能间接体现键过期后的状态。