持久化
RDB
RDB持久化是把当前进程数据生成快照保存到磁盘的过程。
触发机制
手动触发
save命令:阻塞当前Redis服务器,直到RDB过程完成为止。已废弃。
bgsave命令:Redis进程执行fork操作创建子进程,RDB过程由子进程负责,完成后自动结束。
自动触发
# 以下配置表示的条件:
# 服务器在900秒之内被修改了1次
save 900 1
# 服务器在300秒之内被修改了10次
save 300 10
# 服务器在60秒之内被修改了10000次
save 60 10000

AOF
以独立日志的方式记录每次写命令,重启时再重新AOF文件中的命令达到回复数据的目的。其主要作用是解决了数据持久化的实时性。
工作流程

所以的写命令会追加到aof_buf(缓冲区)中;
AOF缓冲区根据对应的策略向硬盘做同步操作;
随着AOF文件越来越大,需要定期对AOF文件进行重写,达到压缩的目的;
当Redis服务器重启时,可以加载AOF文件进行数据恢复。
同步策略
参数
说明
always
命令写入aof_buf后调用系统fsync操作同步AOF文件,fsync完成后线程返回
everysec
命令写入aof_buf后调用系统的write操作,write完成后线程返回。fsync同步文件操作又专门的线程每秒调用一次。默认配置
no
命令写入aof_buf后调用系统的write操作,不对AOF文件做fsync同步,同步硬盘操作由操作系统复杂,通常同步周期最长30秒
重写
随着命令不断写入AOF,文件会越来越大,为了解决这个问题,Redis引入了AOF重写机制压缩文件体积。
启动加载

Last updated