Redis——RDB 持久化

Redis 是一个键值对数据库服务器, 服务器中通常包含着任意个非空数据库, 而每个非空数据库中又可以包含任意个键值对. 服务器中的非空数据库以及他们的键值对统称为数据库状态.

Redis 的 RDB (Redis DataBase) 持久化功能将 Redis 某个时间点上的数据库状态保存到一个 RDB 文件中.

RDB 文件的创建和载入

生成 RDB 文件的命令: 阻塞创建 (SAVE)、非阻塞创建 (BGSAVE).
RDB 文件的载入在服务器启动时自动载入.
如果服务器开启了 AOF 持久化功能, 那么服务器会优先使用 AOF 文件来还原数据库. 只有在 AOF 持久化功能处于关闭状态时, 服务器才会使用 RDB 文件来还原数据库状态.

在这里插入图片描述

SAVE 命令执行时客户端发送的所有命令请求都会被拒绝.
BGSAVE 执行期间:

  • 客户端发送的 SAVE 命令会被服务器拒绝
  • 客户端发送的 BGSAVE 命令会被拒绝
  • BGREWRITEAOF 和 BGSAVE 不能同时执行
    • 如果 BGSAVE 命令正在执行, 那么客户端发送的 BGREWRITEAOF 命令会被延迟到 BGSAVE 命令之后执行
    • 如果 BGREWRITEAOF 命令正在执行, 那么客户端发送的 BGSAVE 命令会被拒绝

RDB 文件载入时会一直处于阻塞状态, 直到载入完成为止.
配置文件redis.conf可以配置 BGSAVE 执行频率.

检查条件是否满足

Redis 的服务器周期性操作函数 serverCron 默认每100ms 就执行一次, 对正在运行的服务器进行维护, 其中一项工作就是检查 SAVE 选项所设置的保存条件是否已经满足, 若满足则执行 BGSAVE 命令.

RDB 文件结构

REDISdb_versiondatabasesEOFcheck_sum
  • REDIS,长度5字节, 保存着 “REDIS” 五个字符。 通过这五个字符, 可以在载入文件时, 快速检查载入文件是否 RDB 文件。
  • db_version ,长度 4 字节, 它的值是一个字符串表示的整数, 这个整数记录了 RDB 文件的版本号
  • databases 部分包含着零个或任意多个数据库, 以及各个数据库中的键值对数据
  • EOF 常量的长度为 1 字节, 这个常量标志着 RDB 文件正文内容的结束
  • check_sum 是一个 8 字节长的无符号整数, 保存着一个校验和,以此来检查 RDB 文件是否出错或损坏
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值