回答
Redis 提供了两种持久化方式:RDB
和 AOF
,两种持久化方式对过期键的处理方式不一样。
RDB 对过期键的处理
RDB
是 Redis 内存的快照,它保存 Redis 在某一时刻的数据状态。当在进行 RDB 持久化时,Redis 会遍历所有键的过期时间,并且不会将已经过期的键写入到 RDB 文件中。因此,在 RDB 文件中,不包含过期的键。
当 Redis 从 RDB
文件恢复时,它加载的数据是快照时刻的有效数据集,不包含过期数据。
AOF 对过期键的处理
对于过期键,AOF
的处理方式是:如果 Redis 中的某个键过期了没有被删除,AOF
文件不会有任何影响。当过期键被删除后(惰性删除和定期删除),AOF
文件后会增加一个 DEL
命令,记录该记录已被删除了。
在 AOF
重写过程中,Redis 会检查所有键的过期时间,它不会将已经过期的键重新写入新的AOF
文件中。