AOF 文件格式
每个命令独立编码为一段数据。数据遵循统一协议。
每行以”\r\n”结束第一行”*”号开头,后接命令参数的个数后面跟 参数个数*2行
每两行表示一个参数。第一行”$”起始, 后跟参数的字节数第二行为参数
特殊命令处理:
① 只读命令不存入aof文件
② 多客户端情况下, 会额外添加select命令保证所选数据库一致
③ setex命令需拆分为set与expireat命令
④ expire命令需转换为expireat命令
aof文件离线优化
优化方式
经测试实际数据产生的AOF文件,大小约2GB。
①SELECT命令消除
内含20,343,477条SET命令,5,126,406条SELECT命令,SELECT命令占比过重。 对不同数据库进行顺序写入,减少SELECT命令至与数据库数相同。
②SET命令消除
20,343,477条SET命令,可合并为一条MSET命令,减少命令解析耗时
③重复KEY去除
20,343,477条SET命令,恢复测试发现数据库中实际KEY数量约13,000,000,可以去除重复KEY,取最新值
优化的方法大概就是这样。