Redis 混合持久化与纯缓存模式
RDB - AOF 混合持久化
官网建议
The general indication you should use both persistence methods is if you want a degree of data safety comparable to what PostgreSQL can provide you.
RDB vs AOF
AOF and RDB persistence can be enabled at the same time without pfoblems. If the AOF is enabled on startup Redis will load the AOF, that is the file with the better durability guarantees.
数据恢复顺序和加载流程
在同时开启 rdb 和 aof 持久化时,重启时只会加载 aof 文件,不会加载 rdb 文件。
持久化选用
- RDB 持久化方式能够在指定的时间间隔能对你的数据进行快照存储;
- AOF 持久化方式记录每次对服务器写的操作,当服务器重启的时候会重新执行这些命令来恢复原始的数据,AOF 命令以 redis 协议追加保存每次写的操作到文件末尾。
同时开启两种持久化方式
- 在这种情况下,当 redis 重启的时候会优先载入 AOF 文件来恢复原始的数据,因为在通常情况下 AOF 文件保存的数据集要比 RDB 文件保存的数据集要完成;
- RDB 的数据不实时,同时使用两者时服务器重启也只会找 AOF 文件。那要不要只使用 AOF 呢? 作者建议不要,因为 RDB 更适合用于备份数据库(AOF 在不断变化不好备份),留着 RDB 作为一个万一的手段。
推荐方案
RDB + AOF 混合使用
结合 RDB + AOF 的优点,既能快速加载又能避免丢失过多的数据
-
开启混合方式设置
-
RDB + AOF 的混合方式:RDB 镜像做全量持久化,AOF 做增量持久化
先使用 RDB 进行快照存储,然后使用 AOF 持久化记录所有的写操作,当重写策略满足或手动触发重写的时候,将最新的数据存储为新的 RDB 记录。这样的话,重启服务的时候会从 RDB 和 AOF 两部分恢复数据,既保证了数据完整性,又提高了恢复数据的性能。简单来说:混合持久化方式产生的文件一部分是 RDB 格式,一部分是 AOF 格式。AOF 包括了 RDB 头部 + AOF混写
纯缓存模式
同时关闭 RDB 和 AOF
save ""
- 禁用 rdb
- 禁用 rdb 持久化模式下,仍可以使用命令
save
,bgsave
生成 RDB 文件
appendonly no
- 禁用 aof
- 禁用 aof 持久化模式下,仍可以使用命令
bgrewriteaof
生成 AOF 文件