1. 概述两种持久化方案
Redis默认支持RDB(Redis DataBase)和AOF(Append Only File)两种持久化方案。
RDB:生成一个数据库快照,在服务挂掉想要恢复数据的时候可以通过快照文件dump.rdb
来恢复数据。
默认的RDB策略如下(可以在redis.conf
文件的SNAPSHOTTING模块中找到):
# save <seconds> <changes>
# seconds秒内有changes次修改操作则执行保存快照的操作
save 900 1
save 300 10
save 60 10000
AOF:记录Redis的修改指令,保存在文件appendonly.aof
中。可以和RDB模式一起开启,但是在恢复数据的时候会默认使用RDB的dump.rdb
来恢复数据。
AOF有三种策略供选择,默认采用appendfsync everysec
模式,即:每秒记录一次,是一种折中的方案。(可以在redis.conf
文件的APPEND ONLY MODE模块中找到)
# appendfsync always 有一条写操作就刷一条到appendonly.aof文件中,安全性高
appendfsync everysec
# appendfsync no 依赖系统刷新将数据从内存刷到硬盘,性能高
2. 持久化的开启和关闭
RDB持久化策略是默认开启的,我们只需要指定一个存放dump.rdb
的路径以方便我们找到文件,在redis.conf
文件的SNAPSHOTTING模块末尾有一个dir ./
的配置,将路径替代./即可,
注意:AOF策略产生的appendonly.aof
也会存放在这个路径下。
开启AOF策略,在redis.conf
文件的APPEND ONLY MODE模块中,将appendonly no
修改为appendonly yes
。
如何关闭RDB策略,将RDB策略的save策略全部失效即可,放开SNAPSHOTTING模块中的save ""
,就在那三个策略的上面。
注意:经过笔者的实验,如果dir路径下同时存在dump.rdb
和appendonly.aof
文件,那么Redis会按照dump.rdb
文件来恢复数据。
3. 恢复数据
如果有持久化文件,不需要做其他操作,在启动的时候Redis就会恢复数据。
4. 其他
有关AOF策略还有一个概念叫做重写,简而言之就是多条修改命令可以做简化节省存储空间,可以在Redis持久化:RDB、AOF看看