Redis持久化机制——RDB和AOF

面试和工作,持久化都是重点!
Redis是内存数据库,如果不将内存中的数据库状态保存到磁盘,那么一旦服务器进程退出,服务器中的数据库状态也会消失!所以Redis提供了持久化功能。
在主从复制中,rdb就是备用了!从机上面!

什么是RBD(Redis DataBase)

1603633451(1).png

简介:在指定的 时间间隔内,将内存中的数据集快照写入磁盘,也就是SnapShot快照,他恢复时是将快照文件直接读到内存里。
Redis会单独创建(fork) 一个子进程进行持久化,会先将数据写入到一个临时文件中,待持久化过程都结束了,在用这个临时文件替换上次持久化好的文件,整个过程中,主进程是不进行任何 IO操作的,这就确保了极高的性能。如果需要进行大规模的数据恢复,且对于数据恢复的完整性不是很敏感,那么RDB方式要比AOF方式更加高效。RDB的缺点就是,最后一次持久化后的数据可能丢失。

RDB保存的文件是dump.rdb
1603631996(1).jpg

触发机制

1、save的规则满足的情况下,会自动触发rdb规则;
2、执行flushall命令,也会触发我们的rdb规则!
3、退出redis,也会产生rdb文件!
备份就自动生成一个dump.rdb


1603633005(1).jpg

如何恢复rdb文件

1、只需要将rdb文件放在我们redis启动目录就可以,redis启动的时候会自动检查恢复dump.rdb的文件;
2、查看需要存在的位置

127.0.0.1:6379> config get dir   启动就会自动恢复其中的数据

几乎他默认的配置就够用了 ,配置大多不需要修改
优点:
1、适合大规模的数据恢复
2、对数据的完整性要求不高,
缺点:
1、需要一定的数据间隔进程操作!如果redis意外宕机,这个最后一次修改的数据就没有了。
2、fork进程会占用一定的内存空间!!

什么是AOF(Append Only File)

1603636934(1).png

将我们的所以命令都记录下来,history,恢复的时候就把这个文件全部再执行一遍!
以日志的形式记录每个写操作,将Redis执行过的所有指令记录下来(只记录写操作),只许追加文件但不可改写文件,redis启动之初会读取该文件重新构建数据,换言之,redis重启的话就根据日志文件的内容将写指令从前到后执行一次已完成数据的恢复工作

Aof保存的是appendonly.aof 文件

1603635252(1).png

开启aof需要改为yes
如果这个aof文件有错位,这时候redis是启动不起来的,我们需要修复这个aof文件。redis给我们提供了一个工具。

1603635944(1).png
如果文件正常,重启则可恢复

重写规则说明

aof默认文件的无限追加,文件会越来越大
如果aof文件大于64M,fork一个新的进程,来讲我们的文件进行重写!


1603636445(1).png

AOF的优点和缺点

优点:
1、每一次修改,都同步,文件的完整性会更好
2、每秒同步一次,会丢失一秒的数据
3、从不同步,效率最高!
缺点:
1、相对于数据文件来说,aof远远大于rdb,修复速度也比rdb慢!
2、AOF的运行效率也要比 rdb慢,所以我们redis默认的配置就是rdb持久化!

扩展

1603636811(1).png

1603636851(1).png

你可能感兴趣的:(Redis持久化机制——RDB和AOF)