Redis持久化机制面试结构化Redis持久化就是把内存的数据保存到磁盘防止宕机数据全部丢失有两种RDB、AOF也可以两者同时开启。1. RDB快照把某一时刻全量内存数据生成一个二进制快照文件dump.rdb保存磁盘。触发方式手动触发save主线程同步执行会阻塞大数据量不建议用。bgsavefork子进程子进程做快照主线程继续处理请求日常主要用这个。自动触发配置save 秒 改动次数比如save 900 1900秒内至少1个key改动自动执行bgsave。优点文件体积小二进制文件适合做备份、迁移。恢复速度快直接加载rdb文件。缺点会丢失最后一次快照之后的数据两次快照之间宕机这部分内存数据没落地磁盘直接丢失。fork子进程时如果数据量大会短暂阻塞主线程。2. AOF追加日志记录每一条写命令以文本日志形式追加到aof文件Redis重启时重新回放日志命令恢复数据。三种刷盘策略appendfsyncalways每写一条就刷磁盘几乎不丢数据性能很差。everysec每秒刷一次磁盘默认配置最多丢失1秒数据性能和安全折中。no交给操作系统自己刷盘不可控丢失数据多。AOF重写 bgrewriteaofAOF日志会越写越大。重写会fork子进程读取当前内存数据生成一份精简AOF日志替换旧大文件不会记录无效的中间命令。注意重写不会阻塞主线程。优点数据丢失极少默认everysec最多丢1秒数据安全性高。缺点AOF日志文件体积一般比RDB大恢复数据需要回放命令速度慢于RDB。3. RDB AOF同时开启Redis4.0以后混合持久化bgsave生成RDB快照同时把快照之后增量写命令追加到AOFaof文件开头是rdb二进制后面是aof日志。恢复的时候先加载rdb快照再回放后面增量AOF命令。兼顾RDB恢复快、AOF丢失少的优点。注意同时开启时Redis重启优先加载AOF文件。4. 各自适用场景RDB适合定时冷备份可以容忍少量数据丢失。AOF追求数据安全不想丢失大量数据线上一般开启AOF。总结RDB全量快照bgsave子进程恢复快存在数据丢失风险AOF记录写命令日志三种刷盘策略靠AOF重写压缩文件4.0支持混合持久化线上最推荐两种持久化都会fork子进程大数据量要注意fork带来的短暂阻塞。