Redis持久化
先上结论:Redis
持久化操作分为rdb
以及aof
,但是前者已经够用
1. RDB(Redis DataBase)
1.1 概述
rdb
保存的是dump.rdb
文件- 在指定的时间间隔内将内存中的数据集快照写入磁盘,类似于
Snapshot
快照 - 恢复时是将快照文件直接读到内存里
- 在
redis.conf
的快照配置中设置了save
保存机制之后,可以设置持久化,一般来说conf
配置文件不需要进行修改
其原理在主进程的运行过程中,创建一个子进程。子进程会先将所有的数据写入到一个临时文件中,等持久化结束,再用这个临时文件替换上次持久化的文件。在整个过程中,主进程是不进行任何的读写操作,确保了性能。
1.2 配置应用
编辑配置文件redis.conf
,找到SNAPSHOTTING
关键字,写入我们自己的值
其上的修改字段表示多少秒内,有多少个key
进行了修改,会触发保存机制
# 900秒内,有1个key进行了修改,将触发保存机制
save 900 1
设置持久化文件的名称以及设置持久化文件的路径位置。这里千万要注意,得赋予这个对应的文件夹写入权限,例如chomod -R 777 /usr/local/bin/myRedisDump
此后,我们每次触发一次保存机制,相应的文件就会存储在该文件夹下
触发机制
save
的规则满足的情况下,会自动触发rdb
规则- 执行
flushall
命令,也会触发rdb
规则 - 退出
redis
,也会产生rdb
文件
如何恢复
rdb
文件
首先查看我们存在的目录位置
config get dir
将rdb
文件放在所示目录下即可,redis
启动会自动监测该数据文件并且恢复
优缺点
优点:
- 适合大规模的数据恢复
- 对数据的完整性要不高
缺点:
- 需要一定的时间间隔进程操作,如果意外宕机了,这个最后一次修改数据就没有的了
- 开启子进程的时候,会占用一定的内容空间
2. AOF(Append Only File)
2.1 概述
aof
保存的是appendonly.aof
文件- 将所有命令记录下来,恢复的时候直接全部重新执行,默认关闭该模式
- 以日志的形式来记录每个写操作,将
Redis
执行过的所有指令记录下来(读操作不记录),只许追加文件,但不可以改写文件,redis
启动之初会读取该文件重新构建数据 redis
重启就根据日志文件的内容将写指令从前到后执行一次以完成数据的恢复工作
2.2 配置应用
编辑配置文件redis.conf
,找到APPEND ONLY MODE
关键字,将其改为yes
即可
修复
如果生成的aof
配置文件有错,redis
无法正常启动,可以利用自带的修复软件
redis-check-aof --fix appendonly.aof
优缺点
优点:
- 每一次修改都同步,文件的完整性更好
- 从不同步,效率最高
缺点
- 相对文件数据来说,修复速度较慢
- 运行效率较慢,远远不如
rdb