主题
面试速答(先看这里)
**一句话结论:**这个问题其实是考察 AOF 的重写(Rewrite)机制。
60秒标准回答:
这个问题其实是考察 AOF 的重写(Rewrite)机制。因为正常来说,肯定是10万次,因为 AOF就是Append Only File,通过这个英文的名字就知道,他的持久化机制的核心是追加日志,它会忠实地记录每一次写操作命令。因此,如果你连续执行 10 万次 set x 1 ,且在此期间没有触发 AOF 重写,AOF 文件中就会原封不动地记录 10 万条 set x 1 命令
但是,面试肯定不是这么简单的,所以他想考察的是你知不知道这个重写机制
Redis中,随着写入命令的不断增加,AOF 文件的体积会变得越来越大。为了防止文件无限膨胀并加速数据恢复,Redis 提供了 AOF 重写机制—— AOF 重写并不是去压缩旧文件,而是直接遍历当前内存中的数据库,生成能够重建当前数据集的 最小命令集
**答题顺序:**结论 → 原理/机制 → 关键流程 → 场景与取舍 → 易错点
回答主线:
- **要点1:**但是,面试肯定不是这么简单的,所以他想考察的是你知不知道这个重写机制:
- **要点2:**Redis中,随着写入命令的不断增加,AOF 文件的体积会变得越来越大。
- **要点3:**因为前面的操作是对同一个 key x 反复执行了 10 万次相同的赋值操作,内存中最终的状态仅仅是 x = 1 。
**记忆锚点:**AOF → set → Redis → 知不知道这个重写机制 → 最终只保留 1 条 → set x 1
加分表达:
- 因为正常来说,肯定是10万次,因为 AOF就是Append Only File,通过这个英文的名字就知道,他的持久化机制的核心是追加日志,它会忠实地记录每一次写操作命令。
- 因此,如果你连续执行 10 万次 set x 1 ,且在此期间没有触发 AOF 重写,AOF 文件中就会原封不动地记录 10 万条 set x 1 命令。
追问准备:
- 围绕「AOF」:底层原理是什么?使用时有哪些边界和常见坑?
- 围绕「set」:底层原理是什么?使用时有哪些边界和常见坑?
- 围绕「Redis」:底层原理是什么?使用时有哪些边界和常见坑?
- 如果线上出现异常,你会如何定位、验证并规避?
典型回答
这个问题其实是考察 AOF 的重写(Rewrite)机制。因为正常来说,肯定是10万次,因为AOF就是Append Only File,通过这个英文的名字就知道,他的持久化机制的核心是追加日志,它会忠实地记录每一次写操作命令。因此,如果你连续执行 10 万次 set x 1,且在此期间没有触发 AOF 重写,AOF 文件中就会原封不动地记录 10 万条 set x 1 命令。
但是,面试肯定不是这么简单的,所以他想考察的是你知不知道这个重写机制:
Redis中,随着写入命令的不断增加,AOF 文件的体积会变得越来越大。为了防止文件无限膨胀并加速数据恢复,Redis 提供了 AOF 重写机制——AOF 重写并不是去压缩旧文件,而是直接遍历当前内存中的数据库,生成能够重建当前数据集的最小命令集。
因为前面的操作是对同一个 key x 反复执行了 10 万次相同的赋值操作,内存中最终的状态仅仅是 x = 1。所以在重写生成的新 AOF 文件中,这 10 万次冗余的历史操作会被合并,最终只保留 1 条 **set x 1** 命令。