Redis——RDB文件与持久化

数据库状态:Redis服务器中的非空数据库以及它们的键值对

因为Redis是内存数据库,需要办法将内存中的数据库状态保存到磁盘,否则服务器进程退出,服务器中的数据库状态也会消失不见

RDB持久化既可以手动执行,也可以根据服务器配置选项定期执行

RDB文件的创建与载入 

两个Redis命令可以用于生成RDB文件,一个是SAVE,一个是BGSAVE

SAVE命令会阻塞Redis服务器进程

BGSAVE命令会派生出一个子进程负责创建RDB文件

BGSAVE命令执行期间,SAVE命令和BGSAVE命令会被服务器拒绝

时间工作由rdb.c/rdbSave函数完成

RDB文件的载入工作是在服务器启动时自动执行的

AOF文件的更新频率通常比RDB文件的更新频率高,所以

载入RDB文件实际工作由rdb.c/rdbLoad函数完成

载入RDB文件期间,服务器处于阻塞状态

自动间隔性保存

配置服务器的save选项,任意一个条件被满足,服务器就执行BGSAVE命令

saveparams数组每个元素都是一个saveparam结构,保存了一个save选项的保存条件

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

lastsave属性是一个UNIX时间戳,记录了服务器上一次成功执行SAVE或者BGSAVE命令的时间

检查保存条件是否满足

Redis服务器周期性操作函数serverCron默认每隔100毫秒执行一次

RDB文件结构

 REDIS五字节,载入文件时快速检查载入的文件是否RDB文件

db_version长度4字节,记录了RDB文件的版本号

databases部分包含着零个或多个数据库以及数据库中的键值对数据

EOF常量长度1字节,标志着RDB正文内容的结束

check_num是8字节无符号整数,保存着一个校验和

databases部分

如果0号和3号非空

 

。。。

分析RDB文件

od命令用给定的格式转存并打印输入文件

不包含任何键值对的RDB文件

 

RDB文件检查工具

Redis本身带有RDB文件检查工具redis-check-dump

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值