什么是 RDB
- RDB 文件是在硬盘上的二进制文件;
- RDB 文件是 Redis 在内存存储的数据在某一时刻的快照;
- RDB 文件可在 Redis 启动的时候载入;
- RDB 文件是 Redis 节点复制时的媒介;
三种主要触发 RDB 的机制
save
同步命令
- 生成 RDB 文件,会使客户端的命令排队,
- 文件策略:如果存在老的 RDB 文件会被替换;
- 时间复杂度:O(n);
bgsave
异步命令
- 调用 Linux 的 fork() 函数创建子进程用于生成 RDB 文件;
- 文件策略:如果存在老的 RDB 文件会被替换;
- 时间复杂度:O(n);
自动触发
- 在某些条件满足时,自动触发 RDB 文件的生成,以
bgsave
方式,比如:-
save 60 10000
在 60s 内更新 10000 条数据,触发 RDB; -
save 300 10
在 300s 内更新 10 条数据,触发 RDB; -
save 900 1
在 900s 内更新 1 条数据,触发 RDB;
-
- 相关命令
dbfilename dump.rdb
dir ./
stop-writes-on-bgsave-error yes
rdbcompression yes
-
rdbchecksum yes
采用校验和的方式验证文件的完整性;
最佳配置
- 不使用
save
命令设置自动 RDB; -
dbfilename dump-${port}.rdb
用端口标识文件名; dir /bigdiskpath
stop-writes-on-bgsave-error yes
rdbcompression yes
rdbchecksum yes
其他触发 RDB 的机制
- 主从间发生全量复制时会触发 RDB 文件的生成;
-
debug reload
以不清空内存中的数据的方式重启 Redis 时会触发 RDB 文件的生成; -
shutdown save
时会触发 RDB 文件的生成;