一、为什么要持久化?
Redis是内存数据库,如果不将内存中的数据保存到磁盘,那么一旦服务器进程退出,服务器中的数据库状态也会消失,所以redis提供了持久化功能。
二、持久化方式
1.rdb方式;
在指定的时间内,把内存中的数据持久写到磁盘、也就是snapshot快照,它恢复时是把内存文件直接读到内存里。
Redis会单独创建一个子进程来进行持久化,会先将数据写到一个临时文件中,待持久化过程结束了,再用这个临时文件代替上次持久化到的文件,整个过程中,主进程是不进行io操作的,这就确保了极高的性能,如果需要进行大规模数据的恢复,且对于数据的完整性不是非常敏感,那么rdb比aof更加高效,rdb的缺点就是最后一次持久化的数据可能丢失。
触发方式:
1.Save规则满足的情况下,会触发rdb。
2.执行flushall ,会触发rdb。
3.退出redis,会触发rdb。

查看备份文件保存的路径

持久化文件
优点:
1.适合大规模的数恢复
2.对数据的完整性不高
缺点:
1、需要一定的时间间隔进行操作,如果redis意外宕机了,这个最后一次的数据就没了。
2、Fork进程的时候,会占用一定的空间。
2.aof方式:
AOP append only file,以日志的形式纪录每个操作,将redis执行过的指令都纪录下来(读操作不记录),只许追加文件,但不能改文件,redis启动之初会读取该文件重新构建数据,换言之,就是redis启动之初会根据日志的文件的内容,将写指令从前到后执行一次以完成数据的恢复工作。
优点:
每一次修改都同步,文件的完整性更好
每秒都同步一次,可能会丢失一秒的数据
从不同步,效率最高
2缺点:
相对与数据文件来说,aof远远大于rdb,恢复的速度也比慢。
Aof运行效率也比rdb慢,所以redis默认rdb.