redis4.0之后,持久化方式多了一种,叫混合持久化,我在安装配置过程中费了一些周折,以为没有配置成功,后来看了一些持久化的原理才弄明白,记录如下:
一、参考
1、redis源码分析(6)——aof rewrite https://blog.csdn.net/chosen0ne/article/details/44461497
2、REDIS AOF的实现https://blog.csdn.net/wudongxu/article/details/7053304
二、混合持久化需要在配置文件中配置两个地方。
1、appendonly yes
2、aof-use-rdb-preamble yes
原因:混合持久化是依赖aof文件的。当满足条件时aof会进行重写(Rewrite),可以避免aof文件过大的问题。如果aof-use-rdb-preamble yes,重写的时候,aof文件内容格式是[RDB file][AOF tail] 明显特征是aof文件的开头为:REDIS。这个是RDB文件的开头。一般默认重写时机为auto-aof-rewrite-percentage 100 ;auto-aof-rewrite-min-size 64mb。即文件达到64m时进行重写,然后如果文件大小增长了一倍,也会触发重写。
测试:
1、往redis中插入了6万条数据,aof大小为59m
aof 开头文件为
2、再插入1万条数据
aof 文件没有变大 反而变成了53m 接近dump.rdb 的大小
此时查看aof文件 以REDIS开头
3、如果不开启混合持久化,删除aof和rdb,重启后插入相同的7万条数据,
aof的数据要比dump.rdb更大一些。
此时aof的开头如下