bgrewriteaof 命令

Bgrewriteaof 命令用于异步执行一个 AOF(AppendOnly File)文件重写操作。重写会创建一个当前 AOF 文件的体积优化版本。即使 Bgrewriteaof 执行失败,也不会有任何数据丢失,因为旧的 AOF 文件在 Bgrewriteaof 成功之前不会被修改。


AOF 重写由 Redis 自行触发, Bgrewriteaof 仅仅用于手动触发重写操作。

  • 如果一个子Redis是通过磁盘快照创建的,AOF 重写将会在 RDB终止后才开始保存。这种情况下 BGREWRITEAOF 任然会返回 OK 状态码。可以通过INFO命令查看AOF重写执行情况。
  • 如果只在执行的 AOF 重写返回一个错误,AOF 重写将会在稍后一点的时间重新调用。


AOF 持久化是通过保存 redis 服务器所执行的写命令来记录数据库状态的;被写入 AOF 文件的所有命令都是以 Redis 的命令请求协议格式保存的(Redis的请求协议是纯文本的)。服务器在启动时,通过载入AOF文件、并执行其中的命令来还原服务器状态。使用 Bgrewriteaof 命令的好处:

  • 随着 AOF 文件越来越大,里面会有大部分是重复命令或者可以合并的命令(100次incr = set key 100)
  • 重写的好处:减少 AOF 文件大小,减少内存占用,加快数据库恢复时间。

语法

BGREWRITEAOF

返回值

反馈信息。

实例

redis> BGREWRITEAOF
redis>
Background append only file rewriting started