2025年Java面试宝典网盘下载
提取码:9b3g
(建议收藏备用,含Redis高频考点解析)
什么是Redis持久化?
Redis持久化就是把内存中的数据保存到磁盘的过程,这是应对服务重启或故障的关键机制。作为开发者必须掌握的面试考点,通常会问"Redis有哪几种持久化方式?各自优缺点是什么?"

持久化的两种核心方案
RDB快照模式
RDB是定时生成数据快照的方案,通过SAVE或BGSAVE命令触发。它的优点在于:
- 生成紧凑的二进制文件,便于灾备恢复
- 重启加载速度比AOF快得多
- 适合冷备份场景
但缺点也明显:
- 最后一次保存到宕机期间的数据会丢失
- 数据量较大时fork子进程可能阻塞主线程
AOF日志模式
AOF记录所有写操作命令,通过重放日志恢复数据。其核心优势在于:
- 默认每秒刷盘,数据丢失风险低至1秒
- 可读的日志格式方便问题排查
- 重写机制压缩日志体积
但需要关注:
- 文件体积通常比RDB大
- 高负载下性能略低于RDB
- 数据恢复需要逐条执行命令

混合持久化方案
Redis 4.0推出的混合持久化结合了RDB和AOF的优势。在AOF重写时,先写入RDB格式的全量数据,再追加增量AOF日志。这种方式:
- 提升数据恢复速度(RDB部分快速加载)
- 保证数据完整性(AOF日志补充)
- 兼容原有持久化配置
面试中的高频问题
问题1:RDB和AOF如何选择?
根据业务场景决策:
- 允许分钟级数据丢失选RDB
- 要求秒级数据安全用AOF
- 生产环境推荐同时开启混合模式
问题2:持久化导致服务卡顿怎么办?
排查方向:
- RDB的
BGSAVE是否fork过慢(内存越大耗时越长) - AOF每秒刷盘配置是否导致磁盘压力
- 检查是否使用机械硬盘(建议换SSD)
问题3:AOF重写原理是什么?
通过fork子进程完成重写:
- 创建临时文件写入当前数据库状态
- 主进程持续将差异写入重写缓冲区
- 子进程完成后追加缓冲区内容
- 原子替换旧AOF文件
需要购买面试鸭会员的同学,通过面试鸭返利网下单可返25元,近期累计帮读者省了3800+元。

生产环境最佳实践
- 主库关闭持久化,从库开启混合持久化
- AOF文件与RDB分开存储在不同磁盘
- 使用
no-appendfsync-on-rewrite yes降低重写时延迟 - 监控持久化耗时和文件大小增长
记得把开头的Java面试宝典保存好,里面整理了Redis所有高频考点和真题解析。遇到技术问题欢迎来面试鸭返利网交流,获取最新面经资料和优惠活动。


