三种方式:

  1. RDB(Redis DataBase)方式——快照方式

  2. AOF(Append Only File)文件追加方式

  3. 混合持久化(Redis4之后)

RDB(Redis DataBase)方式——快照方式

将内存数据以快照的方式写入二进制文件中,默认为dump.rdb

触发机制

手动触发

save命令(不推荐)会阻塞当前Redis服务器

bgsave命令:Redis进程执行fork指令创建子进程,由子进程实现RDB持久化,建议使用。

自动触发

save m n:表示m秒内数据集存在n次修改时会自动触发bgsave命令。

优点

RDB快照文件是一个紧凑压缩的二进制文件,经常用于备份,全量复制等场景,开发中可以每6小时bgsave一下,用于容灾备份。

RDB加载RDB恢复数据远远快于AOF方式

缺点

RDB无法做到实时持久化/秒级持久化,每次bgsave时第一需要fork子进程,频繁执行有时间成本。

RDB快照文件不用版本格式不一样,容易引起兼容问题。

AOF(Append Only File)——文件追加方式

记录所有的写命令到独立日志中,重启Redis时会重新执行AOF文件中记录的命令来达到恢复数据的目的,解决了数据持久化的问题。

3种文件同步策略:

appendfsync always——收到命令立刻写磁盘,不推荐

appendfsync everysec——每秒写入磁盘一次,在性能和持久化方面做了很好的折中。

appendfsync no——完全依赖os,一般来说是30s同步一次

混合持久化(Redis4之后)

先用RDB方式写入文件开头,再将后续操作命令以AOF的方式存入文件。即以RDB作为全量备份,AOF作为增量备份,提高备份效率。