redis持久化-RDB
在指定时间间隔内将内存中的数据集快照写入磁盘,也就是行话讲的Snapshot,它恢复时是将快照文件直接读到内存里。
1.备份是如何执行的
redis会单独创建一个(fork)子进程来持久化,先将数据写到一个临时文件中,待持久化过程结束了,再用这个临时文件去替换上一次持久化好的文件,整个过程中,主进程是不进行任何IO操作的,这就确保了极高的性能,如果需要进行大规模的数据恢复,且对数据的完整性不是那么敏感,那么RDB方式比AOF方式更加高效,RDB的缺点是最后一次持久化后的数据可能会丢失。
2.RDB的优点
(1)节省磁盘空间
(2)回复速度快
3.RDB缺点
(1)虽然RDB在fork时使用了写时拷贝技术,但如果数据庞大时还是比较消耗性能的。
(2)在备份周期在一定时间间隔内做一次备份,如果redis意外down掉,就会丢失最后一次快照后的所有修改。
redis持久化-AOF
以日志形式记录每一个写操作,将redis执行过的所有写指令操作记录下来(不包含读操作),只许追加文件不可改写文件,redis启动之初会读取该文件重新构建数据,换言之,redis重启的话就根据日志文件的内容,将指令从前到后执行一次,以完成数据的备份工作。
1.AOF有优点
(1)备份数据更稳健,丢失数据概率更低
(2)可读的日志文本,通过操作AOF稳健,可处理误操作
2.AOF缺点
(1)比起RDB更占磁盘空间
(2)恢复备份速度更慢
(3)每次读写都同步的话,有一定的性能压力
(4)存在个别bug,造成不能恢复