首页/数据/Redis 进阶速查/AOF 体积增长与磁盘水位
持久化56 条

AOF 体积增长与磁盘水位

AOF 记录的是命令历史,同键反复修改会不断追加,体积可能远超数据集本身;用重写压缩,并对 AOF 目录设置磁盘水位告警。

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

AOF 为什么会膨胀

AOF 记录的是写命令历史而不是数据的最终状态,同一个键反复修改就会被不断追加,体积可能远超数据集本身。增长有两个来源:命令历史持续累积,以及长期没有触发重写。控制手段是配合自动重写阈值或人工执行 BGREWRITEAOF,同时给 AOF 目录所在磁盘设置剩余空间告警,因为磁盘写满会直接触发写保护,写入立刻被拒。

基本信息

增长原因命令历史累积,且未触发重写
压缩手段BGREWRITEAOF,或按百分比与最小体积自动触发
重写峰值旧文件与新文件需要在磁盘上同时存在
监控项目录大小、磁盘剩余空间、当前与基线体积
危险线磁盘写满触发写保护,写命令被拒

典型使用场景

  • AOF 目录持续膨胀,需要判断是业务写入猛还是重写没触发
  • 新实例上线前估算持久化所需磁盘容量下限
  • 重写前后对比体积确认压缩效果是否符合预期
  • 制定磁盘水位告警阈值并纳入容量评审
  • 体积异常时排查是否存在大事务、批量删除或异常写入模式

体积查看

体积查看
du -sh /data/redis/appendonlydir/                     # AOF 目录当前实际占用
df -h /data/redis                                     # 所在磁盘剩余空间
redis-cli INFO persistence | grep -E 'aof_current_size|aof_base_size'
redis-cli CONFIG GET auto-aof-rewrite-percentage auto-aof-rewrite-min-size
redis-cli BGREWRITEAOF                                # 手工触发一次重写压缩

体积指标怎么读

指标含义异常表现
aof_current_size当前 AOF 体积与基线同步上涨说明写入持续增长
aof_base_size上次重写后的基线体积长期不变而当前值剧增说明重写没触发
automatic 百分比阈值允许相对基线增长的触发比例设置过大时体积先膨胀很多才重写
最小触发体积低于该值不触发重写设置太小会导致重写过于频繁
目录实际占用文件系统层面的统计与内存指标口径不同,容量规划以它为准
重写后的基线体积通常与数据集规模同级,可用它估算磁盘下限:数据集大小加重写期间的增量,再加新旧文件同存的临时峰值。
关闭 AOF 的实例不适用上述指标;只开 RDB 时快照体积更接近数据集实际大小,两者不能用同一套阈值衡量。

易错点

  • 磁盘容量按当前 AOF 体积规划而不为重写留峰值空间,重写到一半磁盘写满
  • 自动重写阈值设置过大,AOF 先膨胀到数倍数据集才触发,长期浪费磁盘成本
  • 磁盘写满后 RDB 保存同样失败,同时触发写保护,属于叠加故障,恢复窗口更紧
  • 用 AOF 体积直接推断数据量,忽略命令历史与重写状态,容量判断偏差很大

数据来源与参考

  • Redis 官方文档:AOF 重写与文件体积说明
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌