持久化

RDB

RDB持久化是把当前进程数据生成快照保存到磁盘的过程。

触发机制

手动触发

  1. save命令:阻塞当前Redis服务器,直到RDB过程完成为止。已废弃。

  2. bgsave命令:Redis进程执行fork操作创建子进程,RDB过程由子进程负责,完成后自动结束。

自动触发

redis.conf
# 以下配置表示的条件:
# 服务器在900秒之内被修改了1次
save 900 1
# 服务器在300秒之内被修改了10次
save 300 10
# 服务器在60秒之内被修改了10000次
save 60 10000

AOF

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

工作流程

  1. 所以的写命令会追加到aof_buf(缓冲区)中;

  2. AOF缓冲区根据对应的策略向硬盘做同步操作;

  3. 随着AOF文件越来越大,需要定期对AOF文件进行重写,达到压缩的目的;

  4. 当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