RDB 持久化对过期数据的影响
在执行 SAVE 或者 BGSAVE 的时候,会创建 RDB 文件,它仅保存非过期键,已经过期的不会保存在 RDB 中
在启动 Redis 服务器的时候,如果开启了 RDB 功能,那么会自动载入 RDB 文件(从配置文件设置的工作目录中),但是在主从模式下会有所不同:
- 主服务器:仅会载入未过期键,已过期的不载入
- 从服务器:全部载入无论是否过期,后期主从同步的时候从服务器的数据库会被清空(因为后面的第一次同步会是重同步,而不是部分重同步),所以即使载入也没有关系
AOF 持久化对过期数据的影响
当服务器以 AOF 持久化模式运行时,如果数据库中某个键已过期,但还没被删除,那么 AOF 文件不会因为这个过期键而产生任何影响
当触发惰性删除或者定期删除之后,会在 AOF 文件中追加一条删除指令
在执行 AOF 重写过程中,过期数据不会被保存到重写后的 AOF 文件中
主从复制模式中对过期键的处理
当 Redis 运行在主从复制的模式下时,从服务器的过期键删除动作由主服务器控制:
- 主服务器在删除一个过期键之后,会显式地向所有从服务器发送一个 DEL 命令,告知从服务器删除这个过期键
- 从服务器在执行客户端发送的读命令时,即使碰到过期键也不会将过期键删除,而是继续像处理未过期的键一样来处理过期键
- 从服务器只有在接到主服务器发来的 DEL 命令之后,才会删除过期键
由主服务器来控制从服务器统一删除过期键,可以保证主从服务器数据一致性
网友评论