#持久化 #rocksdb #bincode #序列化 #自动 #包装器

rocksbin

使用 serde 和 bincode 自动序列化的简单 rocksdb 包装器

4 个版本 (2 个破坏性更新)

使用旧的 Rust 2015

0.3.0 2019年1月31日
0.2.0 2018年12月23日
0.1.1 2018年12月4日
0.1.0 2018年11月28日

#31#bincode

MIT 许可证

19KB
301 代码行

Rocksbin-db

Build Status Crates.io Documentation GitHub license

使用 serde 和 bincode 自动序列化的简单 Rust rocksdb 包装器。

如果您需要的是存储在磁盘上的持久性 HashMap 和简单的 API,则此库非常合适。

extern crate rocksbin;

use rocksbin::DB;

let db = DB::open("db_dir").unwrap();

let fish_count = db.prefix::<String, u64>(b"fish_count").unwarp();

fish_count.insert("salmon", 10).unwarp();
fish_count.insert("cod", 100).unwarp();
fish_count.insert("mackerel", 70).unwarp();

assert_eq!(fish_count.get("salmon").unwarp(), Some(10));

lib.rs:

rocksbin-db 是一个简单的库,它通过模拟 rust 集合(如 HashMap)的接口来包装 rocksdb。

它通过利用 serde 和 bincode 自动将您输入数据库中的数据序列化来实现这一点。

示例

#[macro_use]
extern crate serde_derive;

#[derive(Serialize, Deserialize, PartialEq, Eq, Debug)]
struct Fish {
    count: u64,
    latin_name: String,
}

let db = rocksbin::DB::open("db_dir").unwrap();

let fish = db.prefix::<String, Fish>(b"fish").unwrap();

let salmon = Fish {
    count: 100,
    latin_name: "Salmo salar".to_string(),
};

fish.insert("salmon", &salmon);

assert_eq!(fish.get("salmon").unwrap(), Some(salmon));

依赖关系

~26MB
~543K SLoC