ITPub博客

首页 > 数据库 > > redis之rdb持久化

redis之rdb持久化

作者:mocow 时间:2019-08-19 15:36:05 0 删除 编辑

之前讲了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,

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/2815/viewspace-3130502/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2019-04-17

  • 博文量
    108
  • 访问量
    1365