结合你此前关注的DuckDB底层存储执行、AI应用开发等技术细节背景,Redis持久化远不止RDB+AOF的表层概念,核心底层细节如下:
1. RDB核心底层:fork机制
执行bgsave时,主进程通过fork()创建子进程,子进程拥有主进程的页表副本,借助写时复制(COW) 机制,父子进程共享物理内存。主进程后续修改的key会触发页中断,复制新的物理页,避免子进程生成快照时数据不一致,同时大幅降低内存开销。
2. AOF刷盘策略
AOF日志记录写命令,三种刷盘策略差异明确:
always:每写一条就同步刷盘,数据零丢失但性能极差;
everysec:每秒异步刷盘,最多丢1秒数据,是Redis默认策略,兼顾性能与安全性;
no:交由操作系统自行调度刷盘,性能最高但丢数据风险大。
3. AOF重写机制
当AOF文件体积过大时,Redis触发bgrewriteaof,子进程遍历当前内存数据,直接生成最小化的重写日志,避免冗余历史命令。重写期间主进程的新命令会写入AOF重写缓冲区,重写完成后将该缓冲区内容追加到新AOF文件,保证数据完整。
4. 混合持久化
Redis 4.0+支持混合模式,重写AOF时先写入RDB格式的全量快照,再追加后续增量AOF命令,兼顾快速恢复和数据完整性,大幅降低纯AOF的恢复耗时。
需要我为你整理Redis持久化高频面试题的标准答案话术吗?帮你面试时流畅应对深层追问不卡壳。