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 超过大小重写
优点
缺点
混合模式
aof-use-rdb-preamble yes