之前分别写过RDB持久化以及AOF持久化的文章,他们各有各的优缺点。rdb文件体积小,加载速度快,但不能做到实时持久化。aof可以做到实时持久化,但是文件体积比起rdb太过巨大。那有没有办法把这两种方式结合起来,文件体积小,另外还能做到实时持久化呢?
非常幸运,redis从4.0后就支持rdb-aof混合持久化了。而且是现在比较推荐的方式。
配置也非常简单,只需要配置两个选项即可。
appendonly yes aof-use-rdb-preamble yes
注意,appendonly也必须设为yes。
案例
通过一个案例,展示给大家看看rdb-aof混合持久化的过程。
目前,我redis数据是空的
cat appendonly.aof
该文件目前没有任务内容。现在,我们执行一条set命令,再来看看
# 执行了一条命令后 127.0.0.1:6379> set name gwx OK # appendonly.aof里面有内容了 # cat appendonly.aof *3 $3 set $4 name $3 gwx
现在aof文件里存放的是正常的aof格式内容。然后再执行bgrewriteaof及一个set命令后,再看看appendonly.aof内容。
127.0.0.1:6379> bgrewriteaof Background append only file rewriting started 127.0.0.1:6379> set age 28 OK # cat appendonly.aof REDIS0009 redis-ver5.0.5 redis-bits
以上がrdb-aof ハイブリッド永続性の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。