Redis RDB
大约 2 分钟RedisRedisRedis 设计与实现
Redis RDB
Redis 是一个内存数据库,将所有的数据都存储在内存里面,为了防止数据丢失,Redis 提供了 RDB
持久化的功能,将Redis 在内存中的数据持久化到磁盘里面。
可以通过 RDB
文件还原数据库。
1 命令
1.1 成 RDB
创建rdb文件可以通过 同步:save
异步: bgsave
命令执行。
在save
命令执行时,服务器会阻塞,客户端发送的所有请求都会被拒绝。
在bgsave
命令执行时,服务器仍然可以处理客户端的命令请求,但是在执行 bgsave
时,save
、bgsave
命令会被拒绝执行,而 rewriteaof
会延迟到 bgsave
命令执行完后执行。
1.2 载入
RDB
文件的载入是在 Redis 启动时自动执行的,启动时如果检测到 RDB
文件就会自动载入。如果开启了 AOF
持久化功能,会游戏使用 aof
文件还原数据库状态。
在载入过程中服务器会一直处于阻塞状态直到载入完成。
2 自动保存
可以通过save命令配置,让服务器每隔一段时间执行一次 bgsave
命令。
save 900 1
: 表示服务器在 900
秒内至少被执行了一次修改。
服务器会记录上次执行 save 或 bgsave 命令的时间 和 到当前这段时间服务器对数据库状态的进行了多少次的修改。
Redis 会每隔100ms,计算一次配置判断是否满足自动保存条件,如果满足就会执行bgsave命令。
3 RDB 文件结构

- REDIS: 固定长度的五个字符,判断是否是rdb文件。
- db_version: 四个字节,记录了rdb文件的版本号。
- databases:数据库中的数据
- eof: 表示rdb文件正文结束
- check_sum:校验和,检查rdb文件是否出损坏。