3个不稳定版本

使用旧的Rust 2015

0.2.1 2016年8月3日
0.2.0 2015年4月3日
0.1.0 2015年3月23日

#210 in #formatter

MIT 许可证

355KB
1.5K SLoC

rdb-rs - RDB解析、格式化、分析。一库全搞定

Build Status Clippy Linting Result

redis-rdb-tools 启发并基于其开发。

文档

在线rdb.fnordig.de/doc/rdb/

构建

cargo build --release

最低要求的Rust版本:1.6.0

安装

make install

您可以通过设置 PREFIX 来更改路径。默认为 /usr

基本操作

rdb-rs仅公开一个重要的方法:parse。此方法负责从流中读取RDB,解析包含的数据,并使用已解析的值调用提供的格式化程序。

use std::io::BufReader;
use std::fs::File;
use std::path::Path;

let file = File::open(&Path::new("dump.rdb")).unwrap();
let reader = BufReader::new(file);
rdb::parse(reader, rdb::formatter::JSON::new(), rdb::filter::Simple::new());

格式化程序

rdb-rs提供了4个预定义的格式化程序,可以用于

  • Plain:仅用于测试的纯文本输出
  • JSON:JSON编码的输出
  • Nil:抑制所有输出
  • Protocol:以RESP(Redis序列化协议)格式化数据

这些格式化程序遵循Formatter trait,并为每种可能的数据类型或操作码提供方法。格式化程序需要正确处理所有提供的数据,例如列表、集合、散列、过期时间和元数据。

命令行

rdb-rs还提供了一个命令行应用程序。

此应用程序将接受RDB文件作为输入,并以指定的格式(默认为JSON)进行格式化。

示例

$ rdb --format json dump.rdb
[{"key":"value"}]
$ rdb --format protocol dump.rdb
*2
$6
SELECT
$1
0
*3
$3
SET
$3
key
$5
value

测试

使用以下命令运行测试

make test

这将使用cargo运行代码测试,并检查它是否可以解析所有包含的转储文件。

贡献

如果您发现错误或想以其他方式帮忙,请打开问题

许可证

MIT。见LICENSE

依赖项

~4.5MB
~85K SLoC