Redis 持久化 --AOF

用户头像
是老郭啊
关注
发布于: 2020 年 08 月 31 日
AOF:

AOF机制会在命令写后将执行命令写入磁盘日志,潜在风险:

  1. 当刚写入还未将执行命令记录在磁盘日志时出现宕机。

  2. AOF日志也是在主线程上运行,写入磁盘的 IO操作必然会在紧凑的 redis读写操作下造成堵塞后面的 redis操作。

AOF 三种回写策略(可配置):

  1. Always: 同步写回(每个写命令执行完,立马同步地将日志写回磁盘)

  2. Everysec: 每秒写回(每个写命令执行完,只是先把日志写到 AOF 文件的内存缓冲区,每隔一秒把缓冲区中的内容写入磁盘)

  3. No: 操作系统控制的写回(每个写命令执行完,只是先把日志写到 AOF 文件的内存缓冲区,由操作系统决定何时将缓冲区内容写回磁盘)

AOF 重写机制:

背景:

  1. 文件系统本身对文件大小有限,对于日志文件无法一直累加。

  2. 日志文件越大,写入的操作时间越久,这在主线程上是非常糟糕的。

  3. 发生宕机后,文件重新执行命令,若文件太大,影响 redis的故障恢复速度。

AOF重写不在主线程,而是在主线程 fork一个线程(bgrewriteaof)来避免阻塞主线程。AOF重写是将同一个 key的多个操作步骤融合成一个操作步骤,然后将此操作步骤存储在新的日志中。



用户头像

是老郭啊

关注

一位头发日渐稀疏的 90后 IT男 2020.04.07 加入

当你焦虑大于努力时,你将沦为焦虑本身。

评论

发布
暂无评论
Redis 持久化--AOF