一 . 概述
redis的持久化功能是决定redis可以作为一定功能数据库的核心.
在redis之中总共有两种方式进行持久化,一种是RDB,一种是AOF的方式.
注意:我们不需要一定使用redis的持久化功能,不使用持久化功能,就
决定我们是把redis作为一种缓存使用,这和memcache没什么区别了.
二 .RDB的基本原理
redis是单进程的,当我们开启RDB数据持久化之后,redis就会fork一个新进程帮助实现RDB的功能.
其实RDB的功能十分简单,就是定时快照一下redis的内存.当快照完成之后,就去替换原先的快照内容.
当redis下一次启动的使用直接将快照文件直接读入到redis之中就可以完成了.
快照的相关配置都集中在redis.conf文件之中.
三 .查看redis.conf文件
我们找到redis配置文件的快照部分.
如上图,这一部分就是redis的快照部分的配置内容.
注意 : redis默认使用的就是快照进行持久化的 .
保存策略:
上述的文字表示redis的RDB模式下的保存策略.
解释一下上述的文字 :
[1]save 900 1 -- 900秒内写一次就会快照一次.
[2]save 300 10 ---300秒内10此写操作就会快照一次.
[3]save 60 10000 : 表示60秒之内有10000此操作,就会进行一次快照.
上述的快照策略我们可以修正,调整到一个比较好的方式.
当我们不设置任何save策略,那么RDB就不会进行快照了 .
当我们出现RBD持久化错误的时候.是否禁止写操作的进行.
这样可以保证redis的数据的一致性,但是当错误出现的时候,会影响redis的使用.
RDB持久化是否压缩: 默认情况下RDB会进行压缩.
如果想要进行最高性能,直接关闭压缩功能,但对存储的压力会变大.
是否开启RDB的校验.
如果想要获取最高的性能,可以设置为no.当然数据的正确可能会出现问题.
RDB文件的保存位置和保存的文件名称.
我们查询redis.conf文件,就可以看到该文件下面有一个dump.rdb文件.这个就是rdb的快照文件.
四 .RDB的优劣
优势 : RDB的性能更高,因为RDB保存的最后的结果集.
劣势: RDB不是实时的,会造成数据的丢失.
丢失的数据时最后一次数据的保存会被丢掉.
总结: 如果对数据的完整性要求不高,我们可以使用RDB的方式进行,这样的性能会更高.
进阶:
[1]RDB需要的内存开销更高,因为需要开启一个FORK一个进程进行RDB的监控.
[2]当数据量很大的时候,RDB的性能很差,因为快照一次的IO操作代价很大.