Redis 有两种持久化方案:RDB(Redis DataBase)和 AOF(Append Only File)。
RDB 详解
RDB 是 Redis 默认的持久化方案。在指定的时间间隔内执行指定次数的写操作,就会将内存中的数据写入磁盘,在指定目录下生成 dump.rdb 文件。Redis 重启时会通过加载 dump.rdb 恢复数据。
从配置文件了解 RDB
打开 redis.conf 文件,可以看到 RDB 的核心规则配置:
save 900 1
save 300 10
save 60 10000指定本地数据库文件名,一般采用默认的 dump.rdb。
dbfilename dump.rdb指定本地数据库存放目录。
dir ./配置存储到本地数据库时是否压缩数据,默认是 yes。
rdbcompression yes触发 RDB 快照
- 在指定时间间隔内,执行指定次数的写操作。
- 执行
save或bgsave命令。 - 执行
flushall命令。 - 执行
shutdown命令。
通过 RDB 文件恢复数据
将 dump.rdb 文件拷贝到 Redis 数据目录下,重启 Redis 服务即可。
RDB 的优缺点
优点:适合大规模数据恢复;如果业务对数据完整性和一致性要求不高,RDB 是不错的选择。
缺点:数据完整性和一致性不如 AOF;备份时 Redis 会 fork 子进程,可能带来额外内存占用。
AOF 详解
AOF 默认不开启。它通过日志追加的方式记录每个写操作,Redis 重启时根据日志内容重新执行写指令完成数据恢复。
从配置文件了解 AOF
开启 AOF:
appendonly yes指定 AOF 文件名:
appendfilename "appendonly.aof"指定更新日志条件:
appendfsync everysec配置 AOF 重写触发机制:
auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb根据 AOF 文件恢复数据
正常情况下,将 appendonly.aof 文件拷贝到 Redis 数据目录下,重启 Redis 服务即可。
如果 AOF 文件格式异常,可以通过命令修复:
redis-check-aof --fix appendonly.aofAOF 重写机制
AOF 会把写操作追加到文件中,文件冗余内容会越来越多。当 AOF 文件大小超过设定阈值时,Redis 会 fork 新进程读取内存中的数据,并重新写入临时文件,最后替换旧的 AOF 文件。
总结
- Redis 默认开启 RDB 持久化。
- RDB 适合大规模恢复,但数据完整性相对较弱。
- AOF 需要手动开启,默认推荐每秒异步记录一次。
- AOF 数据完整性更高,但文件更大、恢复更慢。
- 如果 Redis 只是缓存,可以关闭持久化;如果需要持久化,建议 RDB 和 AOF 同时开启。