RDB启动方式
谁,什么时间,干什么事情
命令执行
- 谁:redis操作者(用户)
- 什么时间:即时(随时进行)
- 干什么事情:保存数据
RDB启动方式---save指令
命令
save
作用:手动执行一次保存操作
RDB启动方式---save指令相关配置
如下为配置文件:
RDB启动方式---save指令工作原理
RDB启动方式---bgsave指令
数据量过大,单线程执行方式造成效率过低如何处理?
后台执行
- 谁:redis操作者(用户)发起指令:redis服务器控制指令执行
- 什么时间:即时(发起);合理的时间(执行)
命令
bgsave
作用:手动启动后台保存操作,但不是立即执行
bgsave指令工作原理
注意:bgsave命令是针对save阻塞问题做的优化,redis内部所有涉及到rdb操作都采用bgsave的方式,save命令可以放弃使用
bgsave指令相关配制
dbfilename dump.rdb
dir
rdbcompression yes
rdbchecksum yes
stop-write-on-bgsave-error yes
说明:后天存储过程中如果出现错误现象,是否停止保存操作
经验:通常默认为开启状态
rdb启动方式---save配置
反复执行保存指令,忘记了怎么办?不知道数据产生了多少变化,何时保存?
--自动执行
谁:redis服务器发起指令(基于条件)
什么时间:满足条件
干什么事情:保存数据
配置
save second changes
作用
满足限定时间范围内key的变化数量达到指定数量即进行持久化
参数
second:监控时间范围
changes:监控key的变化量
位置
在conf文件中进行配置
范例
save 300 1
save 300 10
save 60 10000
Save配置原理
注意:
- save配置要根据实际业务情况设置,频度过高或过低都会出现性能问题,结果可能是灾难性的
- save配置中对于second与change设置通常具有互补对应关系,尽量不要设置成包含性关系
- save配置启动后执行的是bgsave操作
Rdb三种启动方式对比
Rdb特殊启动形式
- 全量复制
在主从复制中详细讲解
- 服务器运行过程中重启
debug reload
- 关闭服务器时指定保存数据
shutdown save
rdb优点
rdb是一个紧凑压缩的二进制文件,存储效率较高
rdb内部存储的是redis在某个时间点的数据快照,非常适合用于数据备份,全量复制等场景
rdb恢复数据的速度要比aof快很多
应用:服务器中每X小时执行bgsave备份,并将rdb文件拷贝到远程机器中,用于灾难恢复
rdb缺点
rdb方式无论是执行指令还是利用配置,无法做到实时持久化,具有较大的可能性丢失数据
bgsave指令每次运行要执行fork操作创建子进程,要牺牲掉一些性能
redis的众多版本中未进行rdb文件格式的版本统一,有可能出现各版本服务之间数据格式无法兼容现象