前往小程序,Get更优阅读体验!
立即前往
发布
社区首页 >专栏 >Redis RDB+AOF混合持久化

Redis RDB+AOF混合持久化

原创
作者头像
似水流年o
发布2022-02-18 16:39:19
发布2022-02-18 16:39:19
2K00
代码可运行
举报
文章被收录于专栏:编程学习收获编程学习收获
运行总次数:0
代码可运行

我们都知道RDBAOF数据持久化的优缺点

RDB:数据恢复,安全性

AOF:数据恢复,安全性

那么如果能将RDBAOF两者优点结合起来,是不是一种很不错的选择呢? 在此背景下Redis4推出了RDB+AOF混合持久化方式。

RDB+AOF混合持久化:

  • RDB文件存储的是二进制数据,不可读
  • AOF文件存储的是操作指令,可读

Redis4之前AOF文件存储的数据全部是:操作指令 ;Redis4之后AOF文件存储的数据是:二进制数据+操作指令 。

1.验证过程:

  1. 首先,启动一个Redis4版本的空实例,开启混合持久化功能,接着手动写入一条数据,最后查看AOF文件内容是操作指令。
代码语言:javascript
代码运行次数:0
复制
aof-use-rdb-preamble  yes  #开启RDB+AOF混合持久化功能
set name zhang  #写入一条数据
图1
图1

2.执行bgwriteaof命令,手动触发AOF重写

3.查看AOF文件(内容变成二进制不可读数据):

图2
图2

4.继续写入一条新命令,查看AOF文件内容此时是二进制数据+操作指令

代码语言:javascript
代码运行次数:0
复制
set age 18
图3
图3

2.完整流程总结:

  1. 新启动空闲Redis实例,开启混合持久化功能,写入数据,此时AOF文件内容是操作指令
  2. 执行AOF重写功能,fork()的子进程会把共享内存中所有的数据以RDB形式写到AOF临时文件中,然后继续把重写缓冲区中增量数据操作指令类型AOF临时文件中,最后用AOF临时文件替换原AOF文件,AOF重写完成
  3. 继续写入数据,此时写入的新数据依然是操作指令类型
  4. 执行AOF重写,重复步骤2操作..... ;
  5. Redis重启,此时会加载AOF文件(前面部分是二进制数据,后面部分是指令数据的AOF文件)置内存;

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档