RDB

全量,二进制文件
将内存中的数据同步到硬盘文件,当redis重启后将硬盘文件重新加载到内存。
fork+cow
fork出子线程,父子线程数据同步,子线程将数据写入到临时文件,持久化结束后,用临时文件替代之前的快照文件

命令

save:阻塞创建RDB快照
bgsave:子进程创建RDB快照

配置文件

save m n m秒发生n次变化触发bgsave
dbfilename 文件名
dir ./ 备份文件夹

优点

重启后加载速度快

缺点

save效率低,无法实时持久化
二进制文件与版本相关,存在不兼容的情况

AOF

增量,类似于binlog
将每一条更改命令通过write函数追加到文件最后,当redis重启时会重新执行文件中的命令。
重写:将抵消的命令去除,减小文件大小

配置

appendonly yes 开启aof
appendfilename 备份文件名
dir ./ 备份文件夹

追加频率

appendfsync always 每次写入都追加
appendfsync everysec 每秒追加
appendfsync no 系统自动追加

重写频率

auto-aof-rewrite-percentage 超过比例重写
auto-aof-rewrite-min-size 超过大小重写

优点

数据完整
易读性强

缺点

文件体积大
增加磁盘io,效率低

混合模式

aof-use-rdb-preamble yes