redis跑在内存中,如果断电的话,数据就会丢失,所以就有了持久化这个操作。
redis持久化的种类
redis有两种不同粒度的持久化方式:RDB和AOF
RDB方式
一直没有找到RDB的英文全称,但是通过了解RDB的文件格式和存储方式的话,它的英文全称应该是redis database。为何这么说呢?因为RDB持久化的方式是将某个时刻数据库的内存快照保存到文件里,并且文件格式是严格按照redis底层的7种数据类型来紧凑存储的。
RDB由于需要复制整个内存空间,所以操作不能太频繁,因此如果发生数据丢失,这种方式丢失的数据相对来说比AOF多。
AOF方式
AOF是append only file的缩写,表示在文件后边追加,这也言简意赅的描述了这种持久化方式的过程。在redis每收到一个请求的时候,redis不仅执行该请求,还将该请求的命令追加到持久化文件里。由于磁盘IO操作消耗时间,所以会将命令先存放在AOF缓冲区中,当符合条件时,再输入到文件。
但是AOF会存储很多冗余信息,这样会使文件变得很大。为了减小文件,通常会进行AOF重写。重写的时候会fork一个子进程,然后将此时的内存快照以AOF的格式写入文件;为了保持一致性,fork操作后,主进程会将新接收到的命令存放在AOF缓冲区的同时,再存进AOF重写缓冲区,从而保持了数据库的一致性。
相关书籍
- 《Redis开发与运维》:redis入门时可以浏览命令部分,熟悉运用以后再看作者写的有关业务的段落会更好。
- 《Redis设计与实现》:redis入门以后,可以通过看这本书知其然并知其所以然,这本书对熟练运用Redis有较大帮助,因为从此时起Redis不再是一个黑盒。看完这本书再结合业务去重新看上边那本书会有新的收获。
网友评论