Redis 持久化(RDB/AOF)与内存淘汰

共 20 题
#

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 峰值不影响内存规划