相信有经验的开发人员可能都知道,rdb,aof。但是不知道大家有没有仔细的去想过几个问题:
(1)rdb和aof到底是如何工作的?
(2)既然有了rdb为什么还要有aof呢?
(3)如果我既设置了rdb又设置了aof,那么到底听谁的?
(4)aof的混合持久化又是怎么回事呢?
下面我主要围绕这几个方面,结合一些具体的案例。来跟大家分享一下我这边的总结心得。
首先我们来看rdb
当然首先得知道rdb是什么东西,如何去设置:
RDB:原理是redis会单独创建(fork)一个与当前进程一模一样的子进程来进行持久化,这个子进程的所有数据(变量。环境变量,程序程序计数器等)都和原进程一模一样,会先将数据写入到一个临时文件中,待持久化结束了,再用这个临时文件替换上次持久化好的文件,整个过程中,主进程不进行任何的io操作,这就确保了极高的性能