redis 的 RDB 和 AOF

RDB

Redis 是一个内存数据库,数据信息存储在内存中,一旦服务器进程退出,数据全部消失。为了解决这个问题,Redis提供了 RDB(Redis Database) 持久化功能,可以将数据保存到 RDB 文件中。
因为AOF 文件的更新频率通常比 RDB 文件的更新频率高,所以如果开启了 AOF 持久化功能,那服务器就会优先使用 AOF 文件来还原数据库。

RDB 文件的创建和载入

服务器在载入 RDB 文件期间,会一直处于阻塞状态。

可以使用两个命令生成 RDB 文件:

  • save:save 命令会组折redis 服务器进程,知道 RDB 文件创建完毕。服务器阻塞期间,所有客户端请求都会被拒绝。
  • bgsave:bgsave 命令是由子进程执行的。所以 Redis 服务器可以继续处理客户端请求。有三条命令不能执行:
    • save 和 bgsave:bgsave 执行期间,save 和 bgsave会被直接拒绝。避免产生竞争。
    • bgrewriteaof:出于性能考虑,避免两个进程同时进行磁盘写入。bgsave 执行期间,收到的 bgrewriteaof 命令会被延后到 bgsave执行完毕之后执行。bgrewriteaof 执行期间,收到的 bgsave 命令会被拒绝。

自动间隔保存

可以通过配置 save 选项,让服务器每隔一段时间自动执行一次 bgsave 命令。
保存条件:save m n。服务器在 m 秒之内,对数据库进行了至少 n 次修改。
可以配置多个条件,只要有一个满足,就执行 bgsave。
默认每个100毫秒执行一次 servercron 函数,进行周期性操作。同时检测是否满足save设置的保存条件。
在这里插入图片描述

RDB 文件结构

分析 RDB 文件

重点回顾

在这里插入图片描述

AOF

AOF 持久化的实现

AOF 持久化功能的实现可分为命令追加、文件写入、文件同步三个步骤。
Redis 内部有一个 aof_buf 缓冲区,服务器执行写命令后,会将指令追加到 aof_buf 中。
文件写入,指的是调用 系统 write 将 aof_buf 中的信息写入。数据可能在系统进行文件读写的缓冲区中。每个时间循环,都会调用 write 写入。
文件同步,指的是将文件数据由内存缓冲区写入到磁盘中。可以通过配置,更改同步的时机。
在这里插入图片描述

AOF 文件的载入

在这里插入图片描述

AOF 重写和后台重写

因为 AOF 持久化是通过保存被执行的写命令来记录数据库状态的,所以随着时间的流逝,AOF 文件内从会越来越多。此时就需要进行 AOF 文件重写。
文件重写,是通过读取数据库当前状态实现的。
在这里插入图片描述

在这里插入图片描述

重点回顾

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值