Redis 宕机了,缓存的数据怎么办?
为了避免宕机导致数据丢失,Redis 使用了持久化,有 AOF、RDB 和混合三种方式。

AOF
AOF,以日志的形式记录所有写命令。
写命令会先追加到 AOF 缓冲区末尾,再写到磁盘的 AOF 文件中。
当 AOF 文件过大时,Redis 会进行重写,直接根据数据的最新状态,生成写命令作为新日志。

RDB
AOF 虽然保证可靠,但恢复时,需要执行所有写命令,速度会较慢,于是就有了 RDB。
RDB,把某一时刻的内存快照保存到磁盘。恢复时,只需把 RDB 文件读入内存,速度比 AOF 快得多。
底层 Redis 提供了 save 和 bgsave 两个命令来生成 RDB 文件。
save 在主线程中执行,而 bgsave 是 fork 子进程来执行,避免对主线程的阻塞,性能更好。

混合
RDB 虽然恢复速度快,但不保证可靠。
针对这个问题,Redis 4.0 中增加了一个混合使用 AOF 和 RDB 的方法。
先让 RDB 以一定的频率执行,然后在两次快照间,使用 AOF 记录写命令。

如何选用呢?
实际使用时,如果数据不能丢失,那就用混合。如果允许分钟级别的丢失,可以只用 RDB。
参考:
04 | AOF日志:宕机了,Redis如何避免数据丢失?
05 | 内存快照:宕机后,Redis如何实现快速恢复?

Redis 持久化两板斧,AOF、RDB
浙公网安备 33010602011771号