RDB
RDB 是将 Redis 的内存中的数据定期保存到磁盘上,以防止数据在 Redis 进程异常退出或服务器断电等情况下丢失。
RDB 的优点是:快照文件小、恢复速度快,适合做备份和灾难恢复。
RDB 的缺点是:定期更新可能会丢数据(当我修改数据后,准备要通过快照文件跟新数据,此时Redis突然宕机了,那么从上一次更新数据之后的数据就丢失了)
AOF
AOF 是将 Redis 的所有写操作追加到 AOF 文件(Append Only File)的末尾,从而记录了 Redis 服务器运行期间所有修改操作的详细记录。当 Redis 重新启动时,可以通过执行 AOF 文件中保存的写操作来恢复数据。
但是如果 Redis 刚刚执行完一个写命令,还没来得及写 AOF 文件就宕机了,那么这个命令和相应的数据就会丢失了。但是他也比 RDB 要更加靠谱一些。
AOF 的优点是:可以实现更高的数据可靠性、支持更细粒度的数据恢复,适合做数据存档和数据 备份。
AOF 的缺点是:文件大占用空间更多,每次写操作都需要写磁盘导致负载较高
两者对比:
混合持久化
混合持久化的情况下,AOF 重写时会把 Redis 的持久化数据,以 RDB 的格式写入到 AOF 文件的开头,之后的数据再以 AOF 的格式化追加的文件的末尾。
开启混合模式的参数:aof-use-rdb-preamble
混合持久化结合了 RDB 和 AOF 持久化的优点,开头为 RDB 的格式,使得 Redis 可以更快的启动,同时结合 AOF 的优点,有减低了大量数据丢失的风险。
但是,在 AOF 文件中添加了 RDB 格式的内容,使得 AOF 文件的可读性变得很差