rdb解析工具

代码地址:  https://github.com/git-hulk/rdbtools    

问题

Q1. 什么是rdb解析工具?

A1: rdb文件是redis的内存快照文件,他是二进制存储的文件。rdb解析工具,就是将文件流内容还原为可读,或者说还原为文本格式。  

Q2: 为什么写这个工具?

  1. 主要是很多场合需要对RDB文件进行解析, 比如在redis扩容,分成多个端口,就需要将RDB分成多个文件,再加载到各个端口。

  2. 现在已经有的几种语言解析工具,如果python, golang, python版本已经验证过,解析数据比较慢,几乎是难以忍受。golang 没有试过。至于C版本应该性能会好一些,至于多好,需要数据来说明。  

使用说明

1) 这个工具使用C来编写,可以把redis很多已有的数据结构拿过来使用,比如list, set, zset等等,同时解析过程,完全参照redis本身的rdbLoad实现,只是动了一些手脚:

  1. 留出回调函数,用户可以自定义需要的解析后数据格式.
  2. 返回给用户处理的数据结构更简单,类似json格式.
  3. 同时保留redis原有数据结构,同时只保留需要使用的代码.  

2) 用户使用时, 只需要重新定义这个方法,main.c 文件里面已经有一个userHandler作为例子,来格式自己的数据,如格式成aof文件或者json等等.  

3) 启动解析程序,详见github readme文件,这里不再重复.  

4) 下面是自己测试的一个截图:

rdbtools

计划

即将支持Aof/Csv/标准输出(Default), Json也可能会一起支持.

最后

现在的版本只对github 上面的redis 2.2, 2.4, 2.6, 2.8 做了基本测试,可能有bug。