RDB持久化对过期数据的影响


在执行SAVE或者BGSAVE的时候,会创建RDB文件,它仅保存非过期键,已经过期的不会保存在RDB中。

在启动Redis服务器的时候,如果开启了RDB功能,那么会自动载入RDB文件(从配置文件设置的工作目录中),但是在主从模式下会有所不同:

  • 主服务器:仅会载入未过期数据,已过期的不载入

  • 从服务器:全部载入无论是否过期,对于已过期数据的话,后期主从同步的时候主服务器会情况从服务器的数据,所以即使载入也没有关系。


AOF持久化对过期数据的影响


当触发惰性删除或者定期删除之前,虽然数据已过期,但不会被处理,AOF文件也不会有影响。

当触发惰性删除或者定期删除之后,会在AOF文件中追加一条删除指令。

在执行AOF重写过程中,过期数据不会被保存到AOF文件中。


主从复制模式中对过期键的处理


Redis启动之后,并运行在主从复制的模式中(与使用哪种持久化方式无关)对于过期数据处理原则如下:

  • 从服务器的过期数据由主服务器控制

  • 从服务器遇到客户端读取过期数据的时候(按生命周期来说已经过期,但是由于主服务器还没有发送删除指令,所以过期数据还是存在于从服务器),从服务器会返回该过期数据的值(并不会提示过期而返回空值)

  • 根据惰性删除原则,客户请求主服务器的键如果过期,那么主服务器会返回空值,并会发送删除指令把从服务器的该过期键删除