由于Redis是基于内存的数据库,为了保证数据的可用性,Redis提供了两种数据持久化机制:RDB和AOP,下面对这两种持久化方式加以分析。
RDB
运行原理
RDB模式可以在指定的时间间隔内生成内存中整个数据集的持久化快照。快照文件默认被存储在当前文件夹中,名称为dump.rdb,可以通过dir和dbfilename参数来修改默认值。
1.redis调用fork函数复制当前进行的一个副本-子进程
2.父进程继续接收并处理客户端发来的命令
3.子进行将内存中的数据写入一个临时的dump文件
4.子进程写入完成后,会用新的临时dump文件替换就的rdb文件
5.一次持久化完成
在执行fork函数的时候,操作系统会使用写时复制(copy-on-write)策略,也就是说在调用fork的一刻,父子进行有相同的内存模型,当父进程要修改其中的某片数据时,操作系统会将该片数据复制一份,从而保证不影响子进程。
rdb文件是经过压缩的文件,占用的空间比较小,更有利于传输,并且数据恢复速度也比较快。