一,redis的持久化方式:RDB和AOF
RDB,即Redis Database
RDB持久化方式:在指定的时间间隔内,把内存中的数据快照写入磁盘。
这个是redis默认的持久化方式。数据以二进制的形式保存到文件中,默认的文件名为dump.rdb。
AOF持久化方式:Append Only File,将redis执行的每次写命令记录到文件中,默认的文件名是appendonly.aof。
AOP的执行流程如下:
第一步:命令追加。将redis的写命令追加到缓冲区aof_buf。
第二步:文件写入和文件同步。根据不同的同步策略,将aof_buf中的数据写入磁盘。
第三步:文件重写。定期重写AOF文件,达到压缩的目的。
二,redis持久化的工作原理
什么是持久化呢?就是把redis内存中的数据,保存到磁盘或者其他存储介质中。
三,redis的持久化是否可靠
四,redis是单线程的,如何并发处理多个请求?
答案是:使用操作系统的多进程机制。
什么是操作系统的多进程呢?
简单来说就是Copy On Write。当父进程对redis页面进行修改时,会先把这个页面的数据复制一份,然后在这个副本上进行修改,子进程读取的还是原来的页面,并且这个页面不会被修改,所以子进程可以放心的处理自己的事情,进行数据持久化操作。这就是为什么RDB持久化也叫做快照的原因。
接下来还有一个问题要搞清楚,就是linux系统的父子进程的关系,因为我们还没有很好的解释:单线程的linux如何解决并发请求。
一个线程只能属于一个进程,但是一个进程可以fork生成多个子进程,这就是redis单线程能够处理多个并发请求的原因。
也就是说,redis的设计者,把多线程的复杂性,转给了操作系统。在redis层面,无需考虑多线程问题。
五,redis4.0混合持久化