目录
第一部分,先说明这两种持久化机制的特性
第二部分,说明这两种机制的工作原理
第三部分,AOF和RDB的优缺点分析
关于RDB和AOF的实现原理以及优缺点,可以分成三个部分去回答:
第一部分,先说明这两种持久化机制的特性
RDB和AOF都是Redis里面提供的持久化机制,RDB是通过快照方式实现持久化、AOF是通过命令追加的方式实现持久化。
第二部分,说明这两种机制的工作原理
【如图】RDB持久化机制会根据快照触发条件,把内存里面的数据快照写入到磁盘,以二进制的压缩文件进行存储。
RDB快照的触发方式有很多,比如:
1、执行bgsave命令触发异步快照,执行save命令触发同步快照,同步快照会阻塞客户端的执行指令。
2、根据redis.conf文件里面的配置,自动触发bgsave
3、主从复制的时候触发
【如图】,AOF持久化机制是近乎实时的方式来完成持久化的,就是客户端执行一个数据变更的操作,Redis Server就会把这个命令追加到aof缓冲区的末尾,然后再把缓冲区的数据写入到磁盘的AOF文件里面,至于最终什么时候真正持久化到磁盘,是根据刷盘的策略来决定的。
为了避免追加的方式导致AOF文件过大的问题,Redis提供了AOF重写机制(如图),也就是说当AOF文件的大小达到某个阈值的时候,就会把这个文件里面相同的指令进行压缩。
第三部分,AOF和RDB的优缺点分析
RDB和AOF的优缺点有两个:
1、RDB是每隔一段时间触发持久化,因此数据安全性低,AOF可以做到实时持久化,数据安全性较高。
2、RDB文件默认采用压缩的方式持久化,AOF存储的是执行指令,所以RDB在数据恢复的时候性能比AOF要好。
通过这样的回答,逻辑清晰,表达完整,会给面试官一个很好的感受。