# 1. RDB 与 AOF 的混合模式(Redis 4.0+)? A 混合模式只使用 RDB 格式 B 混合模式比纯 AOF 丢失更多 C 混合模式用 RDB 快照打底 + AOF 增量收尾,加载快且丢失少 ✓ 正确答案 D 混合模式无法配置
# 2. RDB(Redis Database)持久化,快照机制? A RDB 文件很大且加载慢 B RDB 能保证不丢失任何数据 C RDB 用 fork + COW 生成快照,不阻塞主线程 ✓ 正确答案 D RDB 只能手动触发
# 3. Streams 与 Pub/Sub 的差异,持久化 vs 实时广播? A Pub/Sub 消息会持久化 B Pub/Sub 支持离线补读 C Streams 不持久化 D Streams 支持持久化、消费组与 ACK 重投 ✓ 正确答案
# 4. AOF 的三种 fsync 策略(always/everysec/no)对数据安全与吞吐的影响,如何按业务选择? A everysec 最多丢失 1 秒数据 ✓ 正确答案 B always 每次写都 fsync,最安全但性能最低 C no 最安全 D everysec 性能总是低于 always
# 5. Redis 持久化对延迟的影响(fork 与 COW 页复制、AOF fsync)与优化(no-appendfsync-on-rewrite) A no-appendfsync-on-rewrite 在 AOF 重写期间暂缓 fsync 减少阻塞 ✓ 正确答案 B fork 大内存实例耗时不会阻塞主线程 C COW 不会增加内存开销 D fsync 阻塞无法避免
# 6. 内存淘汰策略如何选型,volatile-lru、allkeys-lru、volatile-ttl 各适用什么场景?为什么纯缓存场景常用 allkeys-lru? A volatile-lru 会淘汰所有 key B volatile-ttl 淘汰最近最少使用的 key C 纯缓存场景常用 allkeys-lru,让所有 key 都参与淘汰 ✓ 正确答案 D allkeys-lru 只淘汰有 TTL 的 key
# 7. 主从全量同步为什么基于 RDB?主库 fork 生成 RDB 对内存与延迟的影响,与持久化配置(save 策略)如何协同? A 全量同步基于 AOF 文件 B fork 不会增加内存 C 主库 fork 生成 RDB 有内存与延迟影响,需与 bgsave 规划协同 ✓ 正确答案 D diskless 同步会落盘
# 8. AOF 重写(Rewrite)的原理与触发,bgrewriteaof? A 重写会清空所有数据 B 重写后 AOF 文件会更大 C 重写会阻塞主线程 D 重写基于当前数据集重新生成最小 AOF 文件,可手动或自动触发 ✓ 正确答案
# 9. 持久化的配置,save、appendfsync、auto-aof-rewrite-percentage? A save 用于配置 AOF 刷盘策略 B save "" 会开启 RDB C appendfsync 用于配置 RDB 触发条件 D auto-aof-rewrite-percentage 控制 AOF 自动重写的触发 ✓ 正确答案
# 10. Redis 内存碎片与内存淘汰(LRU/LFU/随机)的工程取舍? A 随机淘汰策略能更好保留热点 B activedefrag 用于淘汰 key C LFU 淘汰访问频率最低的 key,更能反映长期热度 ✓ 正确答案 D 碎片率与淘汰无关
# 11. Redis 混合持久化的原理,RDB 快照 + AOF 增量如何做到快速重启与低丢失? A 混合模式重启时只加载 AOF 增量 B 混合模式比纯 RDB 丢失更多 C 混合模式 RDB 打底 + AOF 增量,快速重启且丢失窗口小 ✓ 正确答案 D 混合模式加载最慢
# 12. 内存淘汰(maxmemory-policy)与过期删除(惰性+定期)的协同机制,近似 LRU/LFU 的采样实现? A 淘汰会主动清理已过期 key B 过期删除与内存淘汰是同一机制 C 近似 LFU 能精确统计访问频率 D 近似 LRU 用随机采样 maxmemory-samples 个 key 来淘汰 ✓ 正确答案
# 13. Redis 7 的 AOF 多部分(multi-part AOF)架构,manifest 管理、多槽并行与重写/加载流程的变化? A multi-part AOF 只有一个 AOF 文件 B multi-part AOF 无法重写 C manifest 文件管理多个 AOF 文件的元数据与顺序 ✓ 正确答案 D 加载时无需 manifest
# 14. Redis 内存监控与容量规划,used_memory、mem_fragmentation_ratio 与 evicted_keys 的解读 A 碎片率与容量规划无关 B mem_fragmentation_ratio 越低越好 C used_memory 是物理内存占用 D evicted_keys 持续增长说明内存容量不足 ✓ 正确答案
# 15. Redis 8 的持久化(AOF 多线程/多槽)与阻塞操作治理? A Redis 8 AOF 支持多线程/多槽并发写入减少阻塞 ✓ 正确答案 B Redis 8 移除了异步删除 C Redis 8 持久化必然阻塞主线程 D Redis 8 不支持 multi-part AOF
# 16. 大 Key 与持久化/主从同步的相互影响,如何用 Scan/拆分治理? A 大 Key 对持久化与主从同步影响不大 B 大 Key 无法用 SCAN 识别 C 大 Key 会放大 COW 复制、传输与加载开销,需 Scan 识别并拆分 ✓ 正确答案 D 拆分大 Key 会加重同步负担
# 17. 过期 key 在 RDB 与 AOF 中如何记录?主从节点的过期删除策略差异如何避免读到已过期数据? A 从库主动删除过期 key B 主库主动删除并同步 DEL,从库靠逻辑过期判断兜底 ✓ 正确答案 C RDB 会保存已过期 key D 从库读到过期 key 不会返回空
# 18. Redis 只读缓存场景的持久化取舍,什么时候可以关闭 AOF(appendonly no)?与数据库缓存一致性方案如何配合? A 纯缓存场景必须开启 AOF B 纯缓存场景可关闭 AOF 提升性能,数据从 DB 重建 ✓ 正确答案 C 关闭 AOF 会影响缓存一致性 D 缓存数据永远不可重建
# 19. Redis AOF 文件截断(aof-load-truncated)与异常启动的处理 A aof-load-truncated yes 会加载截断前数据并继续运行 ✓ 正确答案 B aof-load-truncated 只影响 RDB C AOF 截断无法处理 D aof-load-truncated no 会忽略截断
# 20. 持久化状态如何监控,rdb_bgsave_in_progress、aof_rewrite_in_progress 等指标如何用于延迟排查与容量规划? A 持久化状态无法用于容量规划 B aof_rewrite_in_progress 与延迟无关 C rdb_bgsave_in_progress 指示是否正在 bgsave ✓ 正确答案 D COW 峰值不影响内存规划