redis在面试中最常遇到的问题就是持久化问题,下面我们来简单聊一下redis的两种持久化机制以及新版本中的混合持久化机制。
1.rdb
RDB是默认开启的,持久化的文件名为dump.rdb。
原理是redis会单独创建(fork)一个与当前进程一模一样的子进程来进行持久化,这个进程的所有数据(变量,环境变量,程序程序计数器等)都和原进程一模一样,会先将数据写入道一个临时文件中,持久化结束了,再用这个临时文件替换上次持久化好的文件,整个过程中,主进程不进行任何的io操作,这就确保了极高的性能。
(因为redis是单进程的,所以只能在一个时刻做一个操作,假如用户此时有操作,会等待持久化结束后才可以。)
1.1 这个持久化文件在哪里。
- 配置文件中dir这个参数配置持久化文件,默认是./ 生产中写死,否则每次启动redis就会在启动目录下寻找dump.rdb文件。 (导致数据还原失败。)
1.2 什么时候触发持久化。
1.2.1 shutdown时
(正常关闭redis,意外关机kill进程不可以),没有开启aof使用shutdown才