RDB
触发机制
触发机制的条件?
1.满足了save的条件,就会触发rdb规则
2.执行了flushall命令
3.退出redis
会创建一个名为dump.rdb的备份文件在redis服务的同级目录中
如何恢复rdb文件
只需要将rdb文件存放在redis启动目录下即可,redis启动会自动检查dump.rdb恢复其中的数据 (dump.rdb默认在当前目录下,不需要去管)
优缺点
优点:
1.适合大规模的数据恢复
2.对数据完整性要求不高
缺点:
1.需要一定时间间隔操作
2.会占用一定的内存空间
在生产环境下要进行备份
AOF
以日志的形式将所有的指令全部记录下来,读操作不记录。只能追加文件不能改写文件,redis在启动之前会读取该文件重构数据,也就是说,当重启redis时,会根据文件中记录的指令重新执行一遍来完成恢复工作。
使用aof需要去开启aof,因为在默认的条件下使用的是rdb作为持久化操作。
重启redis就会生效,产生一个appendonly.aof文件
如果aof的文件发生了错误,这时我们去启动redis是启动不了的,启动不了我们就要解决文件修复问题。 redis提供了一种工具叫 redis-check-aof
文件修复
使用命令修复
这个时候我们就将aof文件修复了。启动就可以正常运行。
优缺点
优点:
每次的修改都被同步到文件中,文件的完整性好
从同步的频率上来看,从不同步的效率比较高
缺点:
1.相对于数据文件来说,aof的文件大小远大于rdb文件,在大量数据的情况下修复的整体速度aof要比rdb慢。
2.在运行效率方面,aof要比rdb低,aof文件是一种IO读写方式的操作。
两者的区别?
RDB持久化是指在指定的时间间隔内将内存中的数据集快照写入磁盘,实际操作过程是fork一个子进程,先将数据集写入临时文件,写入成功后,再替换之前的文件,用二进制压缩存储。
RDB持久化是指在指定的时间间隔内将内存中的数据集快照写入磁盘,实际操作过程是fork一个子进程,先将数据集写入临时文件,写入成功后,再替换之前的文件,用二进制压缩存储。