开发者社区 问答 正文

AOF重写机制如何实现?

已解决

AOF重写机制如何实现?

展开
收起
游客lmkkns5ck6auu 2022-10-11 20:41:23 366 分享 版权
1 条回答
写回答
取消 提交回答
  • 推荐回答

    随着Redis的运行,AOF的日志会越来越长,如果实例宕机重启,那么重放整个AOF将会变得十分耗时,而在日志记录中,又有很多无意义的记录,比如我现在将一个数据incr一千次,那么就不需要去记录这1000次修改,只需要记录最后的值即可。所以就需要进行AOF重写。

    Redis提供了bgrewriteaof指令用于对AOF日志进行重写,该指令运行时会开辟一个子进程对内存进行遍历,然后将其转换为一系列的Redis的操作指令,再序列化到一个日志文件中。完成后再替换原有的AOF文件,至此完成。

    同样的也可以在Redis.config中对重写机制的触发进行配置:

    通过将no-appendfsync-on-rewrite设置为yes,开启重写机制;auto-aof-rewrite-percentage 100意为比上次从写后文件大小增长了100%再次触发重写;auto-aof-rewrite-min-size 64mb意为当文件至少要达到64mb才会触发制动重写。以上内容摘自《阿里开发者手册-Redis专题》电子书,点击https://developer.aliyun.com/ebook/download/7770 可下载完整版

    2022-10-12 23:45:32
    赞同 展开评论