经过RDB之后,redis会将内存中的数据创建一份快照到硬盘中,称为RDB文件(二进制)
当redis重新启动时,会加载硬盘中的RDB文件,加载到内存中完成数据恢复。
执行流程如下:
redis> save
OK
执行流程如下:
redis> bgsave
BAckground saving started
配置 | second | changes |
---|---|---|
save | 900 | 1 |
save | 300 | 10 |
save | 60 | 10000 |
满足以上任一条件,将创建(bgsave)RDB 文件(二进制)。 比如 60秒内,10000 条数据发生改变,将自动生成 RDB 文件。
缺点 不好控制 RDB 文件的生成,假如写入量很大的话 RDB 生成太过频繁,频繁写入硬盘,对硬盘负担很大。
配置项 | 默认值 | 含义 |
---|---|---|
dbfilename | dump.rdb | RDB快照文件名 |
dir | ./ | RDB快照文件生成所在目录 |
stop-writes-on-bgsave-error | yes | bgsave时发生错误是否停止写入 |
rdbcompression | yes | RDB文件是否采用压缩 |
rdbchecksum | yes | 是否对RDB进行校验 |
这里重新写一个 redis-server 的启动配置文件,命名为 redis-6379.conf
,放到 /opt/soft/redis/config/
目录下,修改内容如下,其他配置保持默认不变。
daemonize yes
pidfile /var/run/redis-6379.pid
port 6379
logfile "6379.log"
# save 900 1
# save 300 10
# save 60 10000
stop-writes-on-bgsave-error yes
rdbcompression yes
rdbchecksum yes
dbfilename dump-6379.rdb
dir /opt/soft/redis/data
启动 redis 服务:
redis-server /opt/soft/redis/config/redis-6379.conf
启动客户端:
redis-cli
执行:
可以看到,在 /opt/soft/redis/data/
目录下,生成了 RDB文件。
现在我们演示一下自动生成 RDB 文件操作,修改 redis-6379.conf 文件,配置自动 RDB 操作:
save 60 5
然后重启 redis 服务,启动 redis 客户端,执行:
打印日志尾部信息,可以看到在 60 s 内发生了 5 次改变,所以生成了 RDB 文件。