首页/数据/Redis 进阶速查/appendfsync:always/everysec/no
持久化56 条

appendfsync:always/everysec/no

appendfsync 控制刷盘时机:always 每条命令后 fsync(最稳最慢)、everysec 每秒一次(默认,折中)、no 交给操作系统(最快但丢失窗口不可控)。

Redis 进阶速查数据更新于 2026-10-13

appendfsync 是什么

appendfsync 决定 AOF 缓冲里的数据什么时候真正落到磁盘,是 AOF 在「性能」与「丢失窗口」之间的总开关。它作用于「缓冲写入文件之后」的那一步,即调用 fsync 把操作系统页缓存刷到物理介质。三个取值代表三档取舍:always 每条命令后都刷、everysec 每秒刷一次、no 完全交给操作系统决定。默认值 everysec 是绝大多数生产环境的选择。

基本信息

默认值everysec
取值always / everysec / no
作用点aof_buf 写入文件后的 fsync 时机,不改变命令追加顺序
修改方式CONFIG SET appendfsync everysec,需 CONFIG REWRITE 持久化
相关风险磁盘抖动时 everysec 可能退化为最长约 2 秒一次

典型使用场景

  • 绝大多数业务用 everysec:后台线程刷盘不阻塞主线程,丢失窗口可控在 1 秒左右
  • 账务、订单核对等零丢失要求场景评估 always,前提是压测确认吞吐与延迟能满足业务指标
  • 开发与测试环境可用 no,追求写入速度而数据可随时重建
  • 批量导入历史数据时临时放宽到 everysec 或 no,导入完成后再改回严格档位
  • 磁盘写入延迟不稳定时,通过监控 aof 相关指标判断是否需要升级到更高 IOPS 的介质

查看与调整

查看与调整
redis-cli CONFIG GET appendfsync              # 默认 everysec
redis-cli CONFIG SET appendfsync always       # 临时严格模式,注意吞吐下降
redis-cli CONFIG REWRITE                      # 让改动写回配置文件
redis-cli INFO persistence | grep -E 'aof_last_write_status|aof_current_size'
iostat -x 1 3                                 # 观察磁盘利用率与 fsync 相关延迟
redis-cli INFO stats | grep -E 'aof_'         # 部分版本提供重写与刷盘统计

三档对比

取值刷盘时机丢失窗口性能代价
always每条写命令执行后同步 fsync接近零,仍取决于磁盘是否确实确认吞吐显著下降,延迟受磁盘抖动影响
everysec后台线程每秒 fsync 一次约 1 秒通用默认,主线程几乎无感
no由操作系统决定何时刷页缓存通常数十秒甚至更久写入最快,失控风险最大
everysec 之所以成为默认:fsync 由后台线程执行,主线程只负责把数据写进 AOF 缓冲并交给内核,因此业务不会因为磁盘慢而被拖住。当后台 fsync 超过预期时间仍未完成时,Redis 会推迟下一次 fsync,这段时间的数据都在内核页缓存里,这也是「断电可能丢约 1 秒」的由来。
把 everysec 理解成「不丢数据」是最常见的误判:断电、宿主机崩溃、内核 panic 都会让页缓存里尚未 fsync 的内容消失。需要零丢失只能选 always,并接受性能代价,同时确认磁盘本身不会谎报写入完成。

易错点

  • 把 everysec 当成零丢失承诺并据此设计对账逻辑,真实断电事故中会发现缺失最后约 1 秒的写入,对账规则需要按这个窗口设计
  • 为了性能把 appendfsync 设为 no 却仍要求数据安全,实际丢失窗口由内核脏页回收策略决定,可能长达数十秒且不可预测
  • 启用 always 前未做压测,上线后写入吞吐断崖式下降,通常表现为整体接口延迟上升而非 Redis 本身报错
  • 只调整 appendfsync 而忽略磁盘本身的能力,低端云盘上即使 everysec 也可能出现长时间 fsync 阻塞,进而触发 aof_last_write_status 为 err

数据来源与参考

  • Redis 官方文档:redis.conf appendfsync 注释
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌