Redis持久化

Redis支持RDB和AOF两种持久化机制

RDB持久化

把当前进程数据生成快照保存到硬盘。包括手动触发和自动触发。

  • 手动触发,通过save命令阻塞当前Redis服务进行持久化;通过bgsave命令执行fork创建子进程做持久化,只再创建子进程过程中阻塞Redis服务。
  • 自动触发,shutdown命令,若没开启AOF则执行bgsave。通过配置"save m n",在m秒内n次修改时自动触发bgsave。

可以通过config set dir {newDir}和config set dbfilename {newFileName}设置保存路径和名称,相应的也可以通过get查看路径和名称。

AOF持久化

以独立日志的方式记录每次写命令。重启时再重新执行AOF文件中的命令达到恢复数据的目的。

通过appendonly yes进行配置,生成默认文件为appendonly.aof。流程包括:命令写入(append)、文件同步(sync)、文件重写(rewrite)、重启加载(load):

文件重写是把redis进程内数据转化为写命令同步到新的AOF文件中。有两种触发方式,手动触发和自动触发:

  • 手动触发,通过bgrewriteaof命令进行文件重写
  • 自动触发,auto-aof-rewrite-min-size为运行AOF重写时文件的最小体积。auto-aof-rewrite-percentage为当前AOF空间与上一次重写文件空间的比值。满足两个条件才触发文件重写

AOF缓存区同步文件策略:

  1. always每次修改同步到AOF文件
  2. everysec每秒同步
  3. no由操作系统负责,大概30s同步一次

redis启动时的加载过程:



文件校验,AOF文件损坏时,默认开启aof-load-truncated,忽略损坏的部分继续启动。

新加评论 评论标题:

RDB持久化
AOF持久化