为什么要进行持久化呢?
因为redis是内存操作系统,在写入数据或存入数据不进行持久化数据存入磁盘的话,如果出现宕机或者关闭服务器那么我们的数据也将进行永久的丢失。
RDB
在指定的时间间隔将数据快照写入磁盘,他恢复时是将快照文件直接读取到内存里面。rdb保存的文件名后缀就是 .rdb文件。他保存的文件是dump.rdb,都是在我们配置文件快照中配置的。
RDB触发机制 :
- save的规则满足的情况下,会自动触发我们的rdb。
2. 执行flushall命令时也会触发rdb。
3. 退出redis时也会产生rdb文件。
如何恢复RDB文件 :
只要将我们的rdb文件放到我们redis安装目录下就可以了,redis启动的时候他会自动去检测rdb文件进行恢复。完全自动化的。有时候在生产环境都会进行rdb备份。防止数据丢失
RDB优点与缺点 :
优点 :适合大规模数据恢复,对数据的完整性要求不高。
缺点 :需要一定的时间间隔进程操作,如果redis宕机了,最后一次修改的数据就没有了,还有会占用一定的内存空间。
***************************************************AOF************************************************
什么是AOF :将我们的所有命令都记录下来,恢复的时候就将这个文件全部在执行一遍。AOF默认是关闭的,只需要将下面配置文件改成yes就开启了。
开启我们rdb以后,我们所有执行的命令都会被保存到appendonly.aof文件里面,如果文件正常我们直接重启就可以恢复了,但是文件遭到破坏那么我们的redis是无法启动的,我们必须要通过redis-check-aof文件进行恢复。
恢复命令 :
redis-check-aof --fix appendonly.aof
有点与缺点 :
优点 :每次修改以后都会同步,文件的完整性会更好。但是每秒同步数据也会丢失最后一秒的。
缺点 :开启以后对我们的性能是有一定的影响,效率会有所降低。而且修复的数据也比rdb慢,运行效率也会比rdb慢,所以一般开发的时候都是启动我们的rdb,而不启动aof
总结 : 如果redis只做普通的缓存,我们也可以不使用任何的持久化,如果对数据的要求较高我们可以同时开启rdb和aof,因为rdb虽然效率高但是他会有很多自己的一些规则,比如rdb一些恢复机制什么的,并且rdb的数据没有aof数据完整。如果rdb配置规则过于实时存储的话他会非常的消耗性能。所以各有个的优缺点,一般rdb只保留 save 900 1这条规则。