前言
redis是内存级别的存储系统,断电或机器故障难免数据丢失,为了保证数据的完整redis根据一定的策略将数据保存到硬盘中。目前redis提供了RDB和AOF两种策略互补完成数据持久化。
一、RDB
原理
RDB方式在指定的时间间隔对数据快照备份。这种备份方式有一段时间的间隔,如果在间隔时间内机器发生了故障会丢失这段时间新增的数据。RDB可以开启文件压缩处理的防止文件过大,所以数据备份就是采用这种方式来处理。
优点
-
1、RDB是一个非常紧凑的文件,它保存了某个时间点的数据集,非常适用于数据集的备份,比如你可以在每个小时保存一下过去24小时
内的数据,同时每天保存过去30天的数据,这样即使出了问题你也可以根据需求恢复到不同版本的数据集。 -
2、RDB是一个紧凑的单一文件,很方便传送到另一个远端数据中心,非常适用于灾难恢复。
-
3、RDB在保存RDB文件时父进程唯一需要做的就是开启一个子进程,接下来的工作全部由子进程来做,父进程不需要再做其他IO操 作,所以RDB持久化方式可以最大化redis的性能。
-
4、与AOF相比,在恢复大的数据集的时候,RDB方式会更快一些.
缺点
-
1、不能保证数据的完整性。机器出现意外故障可能导致数据未备份而丢失数据。
-
2、数据量大时保存数据到硬盘非常耗时,可能出现不能及时响应客户端的请求。
配置
在启动redis时推荐使用配置文件的方式来启动RDB持久化策略。参数配置如下:
# 表示900 秒内如果至少有 1 个 key 的值变化,则保存
save 900 1
#表示300 秒内如果至少有 10 个 key 的值变化,则保存
save 300 10
#表示60 秒内如果至少有 10000 个 key 的值变化,则保存
save 60 10000
#当启用了RD