前面 彻底理解Redis持久化 之后,有朋友反馈说 讲的不够彻底,还有 Redis 混合持久化没有说。主要是我自己对Redis也是从小白开始学习的过程,有些新特性没有及时跟踪,以后会及时跟踪Redis或者其他NoSQL的新特性。
回到本文,继续说 混合持久化 。
混合持久化
因为RDB持久化无法实时保存数据,数据库或者主机down机时,会丢失数据。AOF持久化虽然可以提高数据的安全性,但是在恢复数据时需要大量时间。因此Redis 4.0 推出RDB-AOF混合持久化。
持久化时,可以根据AOF的落盘策略实时刷盘。
恢复时先加载AOF文件中的RDB部分,然后再加载AOF文件部分。
这样可以兼得RDB和AOF两种持久化的优点。
开启混合持久化
4.0版本的混合持久化功能默认关闭,我们可以通过 aof-use-rdb-preamble
配置参数控制该功能的启用。5.0 版本默认开启。
需要特别注意的是 要开启混合持久化,必须同时设置 aof-use-rdb-preamble
为yes ,开启AOF持久化方式。
混合持久化流程
混合持久化开启,系统根据策略触发aof rewrite时,fork 一个子线程将内存数据以RDB二进制格式写入AOF文件头部,那些在重写操作执行之后执行的 Redis 命令,则以AOF持久化的方式追加到AOF文件的末尾。
触发机制
因为混合持久化是基于AOF重写的,所以和AOF rewrite的机制一致 。具体参考彻底理解Redis持久化 文章里面的 重写机制
混合持久化开启,同时配置RDB的save参数,Redis会生成rdb文件和AOF文件,而不是省略RDB文件。
文件格式
开启混合模式时,AOF文件的内容
未开启混合持久化,AOF文件的内容
-The End-
本公众号长期关注于数据库技术以及性能优化,故障案例分析,数据库运维技术知识分享,个人成长和自我管理等主题,欢迎扫码关注。
我的新课程《MySQL性能优化》已经在腾讯课堂发布,本课程讲解读几个MySQL性能优化的核心要素:合理利用索引,降低锁影响,提高事务并发度。
目前已有几个录播视频,并且可以回看5-15分钟不等。
欢迎扫码报名
点“在看”给我一朵小黄花