java 面试题记录

1.Redis 的持久化机制 RDB 和 AOF 的优缺点分别是什么?


对比项 RDB(快照持久化) AOF(日志追加持久化)
持久化机制 定时生成内存数据的二进制压缩快照(全量数据)。 记录所有写操作命令(文本格式),重启时重放命令恢复数据。
文件格式 紧凑的二进制文件(dump.rdb)。 文本文件(appendonly.aof),可读性强。
优点 ✅ 恢复速度快(直接加载二进制文件)。
✅ 文件体积小,适合备份。
✅ 对性能影响较小。
✅ 数据安全性高(最多丢失 1 秒数据)。
✅ 可修复损坏文件。
✅ 支持记录操作历史。
缺点 ❌ 数据丢失风险(依赖快照频率)。
❌ 大数据集 fork 可能阻塞主进程。
❌ 恢复速度慢(需逐条执行命令)。
❌ 文件体积大。
❌ 高频写入时性能略低。
数据安全性 低(依赖快照间隔,默认可能丢失几分钟数据)。 高(默认 everysec 策略最多丢失 1 秒数据)。
恢复优先级 Redis 重启时,若同时启用 RDB 和 AOF,优先使用 AOF 恢复数据。 AOF 文件记录更完整,Redis 默认优先加载 AOF。
适用场景 允许部分数据丢失,追求快速恢复(如缓存场景)。 对数据安全性要求高,允许一定性能损失(如订单流水、账户余额)。
配置关键词 save
dbfilename
dir
appendonly yes
appendfsync
auto-aof-rewrite-percentage
auto-aof-rewrite-min-size

总结

维度 选择依据
数据安全 AOF > RDB(优先启用 AOF)。
恢复速度 RDB > AOF(RDB 适合快速重建数据)。
性能影响 RDB(低) > AOF(中)。
推荐组合 生产环境建议同时启用 RDB + AOF(Redis 4.0+ 可用混合持久化 aof-use-rdb-preamble yes)。

你可能感兴趣的:(笔记,java,spring,boot,开发语言)