Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1875131
  • 博文数量: 184
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 2388
  • 用 户 组: 普通用户
  • 注册时间: 2016-12-21 22:26
个人简介

90后空巢老码农

文章分类

全部博文(184)

文章存档

2021年(26)

2020年(56)

2019年(54)

2018年(47)

2017年(1)

我的朋友

分类: NOSQL

2019-08-18 19:05:35

之前讲了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文件,该命令可以用给定的格式转存并打印输入文件,例如

点击(此处)折叠或打开

  1. $ od -c dump.rdb
  2. .......
  3. .......
也可以使用redis本身自带的rdb文件检查工具redis-check-dump,
阅读(1180) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~