https://github.com/badboy/rdb-rs
RDB parsing & dumping library and utility
https://github.com/badboy/rdb-rs
Last synced: over 1 year ago
JSON representation
RDB parsing & dumping library and utility
- Host: GitHub
- URL: https://github.com/badboy/rdb-rs
- Owner: badboy
- License: mit
- Created: 2014-12-30T20:08:06.000Z (over 11 years ago)
- Default Branch: master
- Last Pushed: 2018-01-24T13:03:14.000Z (over 8 years ago)
- Last Synced: 2025-03-05T19:14:32.215Z (over 1 year ago)
- Language: HTML
- Homepage: https://rdb.fnordig.de/
- Size: 445 KB
- Stars: 63
- Watchers: 5
- Forks: 18
- Open Issues: 6
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE
Awesome Lists containing this project
README
# rdb-rs - RDB parsing, formatting, analyzing. All in one library
[](https://crates.io/crates/rdb)
[](https://travis-ci.org/badboy/rdb-rs)
[](http://clippy.bashy.io/github/badboy/rdb-rs/master/log)
Inspired and based on [redis-rdb-tools][].
## Documentation
Online at [rdb.fnordig.de/doc/rdb/][doc].
## Build
```
cargo build --release
```
Minimum required Rust version: 1.6.0
## Install
```
make install
```
You can change the path by setting `PREFIX`. Defaults to `/usr`.
## Basic operation
rdb-rs exposes just one important method: `parse`.
This methods takes care of reading the RDB from a stream,
parsing the containted data and calling the provided formatter with already-parsed values.
```rust
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());
```
### Formatter
rdb-rs brings 4 pre-defined formatters, which can be used:
* `Plain`: Just plain output for testing
* `JSON`: JSON-encoded output
* `Nil`: Surpresses all output
* `Protocol`: Formats the data in [RESP][],
the Redis Serialization Protocol
These formatters adhere to the `Formatter` trait and supply a method for each possible datatype or opcode.
Its up to the formatter to correctly handle all provided data such as lists, sets, hashes, expires and metadata.
### Command-line
rdb-rs brings a Command Line application as well.
This application will take a RDB file as input and format it in the specified format (JSON by default).
Example:
```
$ rdb --format json dump.rdb
[{"key":"value"}]
$ rdb --format protocol dump.rdb
*2
$6
SELECT
$1
0
*3
$3
SET
$3
key
$5
value
```
## Tests
Run tests with:
```
make test
```
This will run the code tests with cargo as well as checking that it can parse all included dump files.
## Contribute
If you find bugs or want to help otherwise, please [open an issue][issues].
## License
MIT. See [LICENSE](LICENSE).
[redis-rdb-tools]: https://github.com/sripathikrishnan/redis-rdb-tools
[RESP]: http://redis.io/topics/protocol
[issues]: https://github.com/badboy/rdb-rs/issues
[doc]: http://rdb.fnordig.de/doc/rdb/