Redis的数据持久化

时间:2022-12-20 14:04:36

Redis 的数据持久化主要有两大机制,AOF 日志和 RDB 快照。

  • AOF 持久化是通过保存 Redis 服务器所执行的写命令来记录数据库状态。
  • RDB 持久化是通过保存数据库中的键值对来记录数据库状态。

根据服务器是否启用了 AOF 持久化功能, 服务器载入数据时所使用的目标文件会有所不同:

  • 如果服务器启用了 AOF 持久化功能, 那么服务器使用 AOF 文件来还原数据库状态。
  • 如果服务器没有启用 AOF 持久化功能,那么服务器使用 RDB 文件来还原数据库状态。

AOF 和 RDB 的优劣局限

AOF 日志相比 RDB 快照的优势:

  • AOF 对系统的性能影响更小:AOF 只是追加日志文件,而 RDB 是对所以键值对的快照,因此一次 AOF 操作比 RDB 对系统的性能影响更小,速度比 RDB 要快,消耗的内存较少。

AOF 日志相比 RDB 快照的劣势:

  • AOF 载入文件的速度更慢:AOF 保存写命令,而 RDB 保存保存键值对来记录数据库状态,因此载入 AOF 文件的速度比载入 RDB 文件的速度更慢。
  • AOF 文件的体积更大:保存相同的数据库状态,AOF 文件比 RDB 文件的体积更大。

AOF 和 RDB 混合持久化

在 Redis4.0 后支持混合持久化方式,如果使用混合持久化:

  • 当服务器执行写命令后,Redis 会以 AOF 持久化方式将命令写回 incr.aof 文件。
  • 当进行 AOF 文件重写时,Redis 会以 RDB 持久化方式将当前数据库状态保存到名为 base.aof 文件,然后再将 AOF 重写缓冲区中的所有内容写入 incr.aof 文件。
  • 当 Redis 服务器重启后,将载入 base.aof 和 incre.aof 文件以还原数据库状态。