• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

redis之rdb持久化

redis 海叔叔 3小时前 3次浏览 已收录 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文件,该命令可以用给定的格式转存并打印输入文件,例如

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


喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址