一、RDB持久化(Redis Database)
- RDB持久化是指在指定的时间间隔内将内存中的数据集快照写入磁盘,实际操作过程是fork一个子进程,先将数据集写入临时文件,写入成功后,再替换之前的文件,用二进制压缩存储。 保存文件格式 dump.rdb
- 设置RDB文件保存条件
- 重启服务
systemctl restart redis_6379
1、测试RDB持久化
①、查看rdb文件存放目录
②、删除已有的dump.rdb文件
③、添加5个key
2、RDB文件生成触发机制
-
满足redis.conf中,快照save生成条件
-
使用flushall命令,自动生成一个RDB文件
-
退出redis
RDB文件恢复:只需要将RDB文件放入Redis启动目录就可以了,Redis自动加载
3、优缺点
优点:
- 适合大规模的数据恢复!
- 对数据完整性要求不高
缺点:
- 需要一定的时间间隔进程操作;如果redis意外宕机,最后一次修改数据就没有了
- fork进程运行的时候,会占用一定的空间
二、AOF(Append Only File)
- AOF持久化以日志的形式记录服务器所处理的每一个写、删除操作,查询操作不会记录,只许追加文件,不许改写文件。以文本的方式记录,可以打开文件看到详细的操作记录,保存文件格式为 appendonly.aof
- aof默认不开启,需要到配置文件中开启
- 重启redis后,appendonly.aof文件自动生成
- 客户端进行一些操作
- appendonly.aof文件内容,日志形式记录
1、重写机制
- 如果aof文件大于64mb,就会fork一个新进程来将我们的文件进行重写(清除之前的64mb)
2、错误修复
- 如果aof文件有错误,redis是启动不了的,可以使用官方自带 redis-check-aof --fix aof文件进行修复
3、优缺点
优点:
- 每一次修改都同步,文件完整性会更好
- 每秒同步一次,最多只会丢失一秒的数据
缺点:
- 相对于数据文件来说,aof远远大于rdb,修复速度比rdb慢
- aof运行速率比rdb慢(追加,频繁IO操作)