RDB持久化对过期数据的影响
在执行SAVE或者BGSAVE的时候,会创建RDB文件,它仅保存非过期键,已经过期的不会保存在RDB中。
在启动Redis服务器的时候,如果开启了RDB功能,那么会自动载入RDB文件(从配置文件设置的工作目录中),但是在主从模式下会有所不同:
主服务器:仅会载入未过期数据,已过期的不载入
从服务器:全部载入无论是否过期,对于已过期数据的话,后期主从同步的时候主服务器会情况从服务器的数据,所以即使载入也没有关系。
AOF持久化对过期数据的影响
当触发惰性删除或者定期删除之前,虽然数据已过期,但不会被处理,AOF文件也不会有影响。
当触发惰性删除或者定期删除之后,会在AOF文件中追加一条删除指令。
在执行AOF重写过程中,过期数据不会被保存到AOF文件中。
主从复制模式中对过期键的处理
在Redis启动之后,并运行在主从复制的模式中(与使用哪种持久化方式无关)对于过期数据处理原则如下:
从服务器的过期数据由主服务器控制
从服务器遇到客户端读取过期数据的时候(按生命周期来说已经过期,但是由于主服务器还没有发送删除指令,所以过期数据还是存在于从服务器),从服务器会返回该过期数据的值(并不会提示过期而返回空值)
根据惰性删除原则,客户请求主服务器的键如果过期,那么主服务器会返回空值,并会发送删除指令把从服务器的该过期键删除
转载于:https://blog.51cto.com/littledevil/1813962