Redis的过期键删除策略( 二 )


  • 如果服务器以主服务器模式运行,在载入RDB文件时,程序会对文件中保存的键进行检查,未过期的键会被载入到数据库中,过期键会被忽略 。
  • 如果服务器以从服务器模式运行,在载入RDB文件时,文件中保存的所有键,不论是否过期,都会被载入到数据库中 。因为主从服务器在进行数据同步(完整重同步)的时候,从服务器的数据库会被清空,所以一般情况下,过期键对载入RDB文件的从服务器不会造成影响 。
4. AOF对过期键的处理4.1 AOF文件写入如果数据库中的某个键已经过期,并且服务器开启了AOF持久化功能,当过期键被惰性删除或者定期删除后,程序会向AOF文件追加一条DEL命令,显示记录该键已被删除 。
举个例子,如果客户端执行命令GET message访问已经过期的message键,那么服务器将执行以下3个动作:
  1. 从数据库中删除message键
  2. 追加一条DEL message命令到AOF文件
  3. 向执行GET message命令的客户端返回空回复
4.2 AOF文件重写在执行AOF文件重写时,程序会对数据库中的键进行检查,已过期的键不会被保存到重写后的AOF文件中 。
5. 复制功能对过期键的处理在主从复制模式下,从服务器的过期键删除动作由主服务器控制:
  • 主服务器在删除一个过期键后,会显式地向所有从服务器发送一个DEL命令,告知从服务器删除这个过期键 。
  • 从服务器在执行客户端发送的读命令时,即使发现该键已过期也不会删除该键,照常返回该键的值 。
  • 从服务器只有接收到主服务器发送的DEL命令后,才会删除过期键 。

作者:申城异乡人
链接:https://juejin.im/post/5e93ce3be51d45470d528262
来源:掘金
著作权归作者所有 。商业转载请联系作者获得授权,非商业转载请注明出处 。




推荐阅读