Redis 的混合持久化

RDB 相比于 AOF,数据恢复的速度更快,因为是二进制数据,直接加载进内存即可,但是 RDB 的频率不好把握。

  • 如果频率太低,在两次快照期间服务器发生宕机,可能会丢失较多的数据
  • 如果频率太高,频繁写入磁盘和创建子进程,会带来额外的性能开销

有没有什么方法,可以既有 RDB 快速恢复的优点,又有 AOF 丢失数据少的优点?

那就将 RDB 和 AOF 混合使用,这个方法是在 Redis 4.0 提出的,即混合使用 AOF 日志和内存快照,也叫混合持久化。

如果想要开启混合持久化功能,可以在 Redis 配置文件中将下面这个配置项设置成 yes。

c 复制代码
aof-use-rdb-preamble yes

混合持久化工作在 AOF 日志重写期间。

  1. 当开启了混合持久化,在 AOF 重写日志时,fork 出来的重写子进程会先将与主进程共享的内存数据,以 RDB 的方式写入到 AOF 文件
  2. 然后主进程处理的操作命令,会被记录在重写缓冲区里,重写缓冲区里的增量命令会以 AOF 的方式写入到 AOF 文件
  3. 写入完成后,子进程通知主进程将新的含有 RDB 格式和 AOF 格式的 AOF 文件替换旧的 AOF 文件

简单来说,使用了混合持久化,AOF 文件的前半部分是 RDB 格式的全量数据,后半部分是 AOF 格式的增量数据。

这样做的好处在于,重启 Redis 加载数据时,由于前半部分是 RDB 格式,加载的时候速度会很快。

加载完 RDB 的内容后,才会加载后半部分的 AOF 的内容,这里的内容是 Redis 后台子进程重写 AOF 期间,主进程处理的操作命令,可以使得数据更少的丢失。

相关推荐
shuair11 分钟前
redis大key问题-生成大key-生成100万条测试数据
redis
n***33351 小时前
linux redis简单操作
linux·运维·redis
T***74253 小时前
redis连接服务
数据库·redis·bootstrap
m***92384 小时前
Window下Redis的安装和部署详细图文教程(Redis的安装和可视化工具的使用)
数据库·redis·缓存
程序员皮皮林4 小时前
Redis:大数据中如何抗住2000W的QPS
大数据·数据库·redis
n***s9095 小时前
Redis如何设置密码
数据库·redis·缓存
y***61315 小时前
redis 使用
数据库·redis·缓存
n***78685 小时前
Redis-配置文件
数据库·redis·oracle
r***11335 小时前
如何实现Redis安装与使用的详细教程
数据库·redis·缓存
闲人编程5 小时前
Django缓存策略:Redis、Memcached与数据库缓存对比
数据库·redis·缓存·django·memcached·codecapsule