AOF、RDB和复制功能对过期键的处理

本文将介绍RDB持久化功能、AOF持久化功能以及复制功能是如何处理数据库中的过期键。

RDB

生成RDB文件

在执行SAVE命令或者BGSVAE命令创建一个新的RDB文件时,程序会对数据库的键进行检查,过期的键不会被保存到RDB文件中。

载入RDB文件

在启动服务器的时候,若服务器开启了RDB功能,那么服务器将对RDB文件进行载入:

  • 如果服务器以主服务器模式启动,那么在载入RDB文件时,程序会对文件中保存的键进行检查,过期的键不会被载入到数据库中。
  • 如果服务器以从服务器模型启动,那么在载入RDB文件,无论键是否过期,都会被载入到数据库。不过,主从服务器在进行数据同步的时候,从服务器的数据库就会被清空。所以一般来说,过期键对于载入RDB文件的从服务器没有影响。

AOF

AOF文件写入

当服务器以AOF持久化模式运行,如果数据库中的某个键已经过期,但还没有被惰性删除或定期删除,这不会对AOF文件有任何影响。 当过期键被惰性删除或定期删除,程序会向AOF文件追加一条DEL命令,来显示地记录该键已被删除。

AOF重写

在执行AOF重写的过程中,程序会对数据库中的键进行检查,若键已经过期,则不会保存到重写后的AOF文件中。

复制

当服务器运行在复制模式下时,从服务器的过期键删除动作由主服务器控制。

  • 主服务器删除过期键的时候,会向所有从服务器发送DEL命令,告诉从服务器删除这个过期键。
  • 从服务器在执行客户端读命令时,即使碰到过期键也不会删除,而是像处理未过期键一样处理过期键。
  • 从服务器只有在接到主服务器发来的DEL命令,才删除过期键。

通过由主服务器来控制从服务器统一地删除过期键,可以保证主从服务器数据的一致性。

相关推荐
上进小菜猪44 分钟前
基于 YOLOv8 的面向文档智能处理的表格区域检测系统 [目标检测完整源码]
后端
oak隔壁找我1 小时前
JVM常用调优参数
java·后端
IT_陈寒4 小时前
React状态管理终极对决:Redux vs Context API谁更胜一筹?
前端·人工智能·后端
晨星shine5 小时前
GC、Dispose、Unmanaged Resource 和 Managed Resource
后端·c#
蝎子莱莱爱打怪5 小时前
OpenClaw 从零配置指南:接入飞书 + 常用命令 + 原理图解
java·后端·ai编程
倚栏听风雨6 小时前
【ES避坑指南】明明存的是 "CodingAddress",为什么 term 查询死活查不到?彻底搞懂 text 和 keyword
后端
程序员爱钓鱼6 小时前
Go 操作 Windows COM 自动化实战:深入解析 go-ole
后端·go·排序算法
回家路上绕了弯6 小时前
深入解析Agent Subagent架构:原理、协同逻辑与实战落地指南
分布式·后端
子玖6 小时前
实现微信扫码注册登录-基于参数二维码
后端·微信·go
IT_陈寒6 小时前
JavaScript代码效率提升50%?这5个优化技巧你必须知道!
前端·人工智能·后端