1.RDB(Redis DataBase):保存某个时间点的全量数据快照
以快照的形式将进程数据持久化到硬盘,RDB创建一个经过压缩的二进制文件,以“.rdb”结尾,内部存储了各个数据库的键值对数据等信息。(相当于备份数据库状态)
触发方式:
子进程记录接受BGSAVE当时的数据库状态,父进程继续处理接受到的命令,子进程完成文件创建之后发送信号给父进程,父进程处理命令的同时,通过轮询来接受子进程的信号
检查是否存在RDB/AOF的子进程存在,若存在,则直接返回
若不存在,则触发持久化,调用rdbSaveBackground方法执行fork()系统调用创建子进程,fork后,父进程响应其他命令,子进程创建.rdb文件,并存储父进程内存中的数据。
父进程得到通知,以新文件替换旧的.rdb文件
2.AOF(Append Only File)
以独立日志的方式,记录了每次写入命令,重启时再重新执行AOF文件中的命令来恢复数据(备份接受到的指令)
3.RDB和AOF优缺点
5.RDB-AOF混合持久化方式
先以RDB格式写入全量数据,再追加增量数据
Redis实例重启时,使用BGSAVE持久化文件重新构建内容,再使用AOF重放近期的操作指令,实现完整恢复重启之前的状态