RDB: 在指定时间间隔内,将内存的数据快照写入到磁盘的持久化过程。
实际操作:1,生成快照时,当前线程fork一个子进程。
2,然后子线程循环所有数据,把数据写入到二进制文件。
3,写入成功后,替换之前的文件,用二进压缩锁存储。
AOF: 以日志的方式记录每个写操作,并追加到文件中。
RDB与AOF的优缺点
RDB优点:1,一旦采用这种方式,整个redis数据库只包含一个文件,方便进行备份。
2,对于灾难恢复而言,RDB是一个不错的选择,可以轻松的将一个RDB文件转移到其他介质上。
3,它是子进程进行保存文件,父进程不需要进行磁盘IO,实现性能最大化。
RDB缺点:1,RDB需要保存整个数据集,可能五分钟才做一次RDB文件保存,如果在这个时间内,发生宕机,这几分钟之内的 数据就会丢失。
2,子进程在数据持久化工作时,如果数据集比较大,会导致这个服务器停止服务几百毫秒,甚至更久。
AOF优点:1,由于该机制是对日志文件的写操作是用append模式,所以数据的完整性更高。
2,如果日志过大,Redis可以自动启用rewrite机制,从而保证了安全性。