[redis] rdb-dump.rdb

一、描述

rdb(redis databses)

redis的其中一个持久化数据方式(默认),是rdb模式,简单说就是会再一定的触发条件下,会启动子进程生成dump.rdb(快照文件)


二、源码解析

2.1 src/rdb.c:rdbSaveBackground


代码逻辑:

1.fork(),创建出子进程

2.子进程调用rdbSave函数,完成实际的dump操作


2.2 src/rdb.c:


代码逻辑:

1.创建临时文件,tmp-{pid}.rdb

snprintf(tmpfile,256,"temp-%d.rdb", (int) getpid());

2.将快照数据,写入到临时文件中

rioInitWithFile(&rdb,fp);

if (rdbSaveRio(&rdb,&error) == C_ERR) {

    errno = error;

    goto werr;

}

3.将数据实际写入到磁盘中

if (fflush(fp) == EOF) goto werr; //将用户空间的缓存数据刷入内核空间的缓存数据中

if (fsync(fileno(fp)) == -1) goto werr;//将内核空间的缓存数据刷入到实际的物理磁盘中

if (fclose(fp) == EOF) goto werr; //关闭文件,完成写入操作

4.将临时文件改名为dump.rdb

rename(tmpfile,filename)


三、触发条件设置

save 900 1

save 300 10

save 60 10000

意思是:

900秒内有1次数据改变

300秒内有10次数据改变

60秒内有10000次数据改变

满足上面其中一个条件,便会触发生成dump.rdb快照文件的操作

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值