绑定完请刷新页面
取消
刷新

分享好友

×
取消 复制
redis之rdb持久化
2019-08-19 15:36:05

之前讲了aof,今天来讲讲rdb。

rdb简单来说就是将redis存在内存中的数据形成快照,持久化到硬盘,这里跟aof是不一样的,aof是将命令逐个写入,方便后面replay,这里是直接写入数据。

有两个Redis命令可以用于生成rdb文件,一个是SAVE,另一个是BGSAVE。前者会阻塞redis服务器进程,直到RDB文件创建完毕为止,在服务器阻塞期间,服务器不能处理任何命令请求;而后者会在后台fork出来一个子进程,由子进程来执行rdb文件的创建,父进程继续处理命令请求,在此期间,父进程会拒绝SAVE、BGSAVE命令,并阻塞BGREWRITEAOF命令。创建rdb文件的两条命令终都会调用rdbSave函数来完成任务。

而rdb文件的载入是在系统启动时自动完成的,其载入与否取决于aof持久化功能是否开启,若aof功能开启,则载入aof文件;若aof功能没有开启,则载入rdb文件来还原数据库状态,载入rdb文件的实际工作是由rdbLoad函数来完成的。

除了在配置文件中可以自己定义rdb自动执行BGSAVE命令的时机,redis服务器当中还维持着一个dirty计数器,以及一个lastsave属性:

1. dirty计数器记录距离上一次成功执行SAVE命令或者BGSAVE命令之后,服务器对数据库状态进行了多少次修改。

2. lastsave属性时一个UNIX时间戳,记录了上一次成功执行SAVE或者BGSAVE命令的时间。

这两个参数配合redis配置文件中的选项,就可以很好的完成rdb文件的自动保存功能了

我们可以使用od命令来分析redis服务器产生的rdb文件,该命令可以用给定的格式转存并打印输入文件,例如

$ od -c dump.rdb
.......
.......

也可以使用redis本身自带的rdb文件检查工具redis-check-dump,

分享好友

分享这个小栈给你的朋友们,一起进步吧。

NoSQL与NewSQL
创建时间:2020-06-17 14:29:11
关注NoSQL与NewSQL,专区一站找到所需资料!
展开
订阅须知

• 所有用户可根据关注领域订阅专区或所有专区

• 付费订阅:虚拟交易,一经交易不退款;若特殊情况,可3日内客服咨询

• 专区发布评论属默认订阅所评论专区(除付费小栈外)

技术专家

查看更多
  • 小雨滴
    专家
戳我,来吐槽~