redis高级之持久化(二)---RDB方式

RDB启动方式

谁,什么时间,干什么事情

命令执行

  1. 谁:redis操作者(用户)
  2. 什么时间:即时(随时进行)
  3. 干什么事情:保存数据

RDB启动方式---save指令

命令

save

作用:手动执行一次保存操作

RDB启动方式---save指令相关配置

如下为配置文件:

RDB启动方式---save指令工作原理

RDB启动方式---bgsave指令

数据量过大,单线程执行方式造成效率过低如何处理?

后台执行

  1. 谁:redis操作者(用户)发起指令:redis服务器控制指令执行
  2. 什么时间:即时(发起);合理的时间(执行)

命令

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文件格式的版本统一,有可能出现各版本服务之间数据格式无法兼容现象

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章