跳至主要內容

Redis RDB

blacklad大约 2 分钟RedisRedisRedis 设计与实现

Redis RDB

Redis 是一个内存数据库,将所有的数据都存储在内存里面,为了防止数据丢失,Redis 提供了 RDB 持久化的功能,将Redis 在内存中的数据持久化到磁盘里面。

可以通过 RDB 文件还原数据库。

1 命令

1.1 成 RDB

创建rdb文件可以通过 同步:save 异步: bgsave命令执行。

save命令执行时,服务器会阻塞,客户端发送的所有请求都会被拒绝。

bgsave命令执行时,服务器仍然可以处理客户端的命令请求,但是在执行 bgsave 时,savebgsave 命令会被拒绝执行,而 rewriteaof 会延迟到 bgsave 命令执行完后执行。

1.2 载入

RDB 文件的载入是在 Redis 启动时自动执行的,启动时如果检测到 RDB 文件就会自动载入。如果开启了 AOF 持久化功能,会游戏使用 aof 文件还原数据库状态。

在载入过程中服务器会一直处于阻塞状态直到载入完成。

2 自动保存

可以通过save命令配置,让服务器每隔一段时间执行一次 bgsave 命令。

save 900 1: 表示服务器在 900 秒内至少被执行了一次修改。

服务器会记录上次执行 save 或 bgsave 命令的时间 和 到当前这段时间服务器对数据库状态的进行了多少次的修改

Redis 会每隔100ms,计算一次配置判断是否满足自动保存条件,如果满足就会执行bgsave命令。

3 RDB 文件结构

  1. REDIS: 固定长度的五个字符,判断是否是rdb文件。
  2. db_version: 四个字节,记录了rdb文件的版本号。
  3. databases:数据库中的数据
  4. eof: 表示rdb文件正文结束
  5. check_sum:校验和,检查rdb文件是否出损坏。
上次编辑于:
贡献者: blacklad