Redis AOF 核心原理已协议文本方式记录数据库写入命令。
假如以下场景:
- 设置 key
A
过期时间为 30秒; - 在第 15 秒 redis 服务异常关闭,此时 key
A
还有 15 秒过期; - 在 5 分钟后 redis 服务重新启动并从 aof 文件恢复数据;
由于 AOF 恢复的机制是回放命令,导致恢复后的 key A
的过期时间重置为相对当前时间
之后的 30 秒。
如果 redis 服务并没有异常关闭,key A
理应早已过期。
另,RDB 恢复不会有如上类似的问题。