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.rdbappendonly.aof文件,那么Redis会按照dump.rdb文件来恢复数据。

3. 恢复数据

如果有持久化文件,不需要做其他操作,在启动的时候Redis就会恢复数据。

4. 其他

有关AOF策略还有一个概念叫做重写,简而言之就是多条修改命令可以做简化节省存储空间,可以在Redis持久化:RDB、AOF看看