12 个不稳定版本 (3 个破坏性更新)
0.3.1 | 2023年11月25日 |
---|---|
0.3.0 | 2023年11月24日 |
0.2.0 | 2023年11月23日 |
0.1.0 | 2023年11月23日 |
0.0.8 | 2023年11月23日 |
#1921 in 数据库接口
69KB
1.5K SLoC
OKV - 好用的键值存储
OKV 是一个为 Rust 设计的通用键值存储库。它提供了一个简单而强大的 API,灵感来自 heed 包,并支持多种数据库和序列化格式。
特性
- 多种数据库后端:
memdb
:内存数据库,用于快速原型设计和测试。rocksdb
:与 RocksDB 集成,提供健壮的基于磁盘的存储。
- 序列化格式:
serde_json
:JSON 序列化,适用于人类可读的数据存储。rmp-serde
:MessagePack 序列化,适用于高效的二进制格式。
安装
将 OKV 添加到您的项目中
cargo add okv
快速入门
use okv::{Env};
use okv::backend::memory::MemDB;
fn main() -> eyre::Result<()> {
// initialize the storage backend
let memdb = MemDB::new();
let env = Env::new(memdb);
// open a database with the specified key and value types
let db = env.open::<&str, &str>("my_database")?;
// Working with data
db.set_nx("key", "val")?;
assert_eq!(db.get("key")?, Some("val".to_string()));
Ok(())
}
支持的类型
OKV 可以与任何实现 Serialize 接口的自定义类型一起使用。此外,它还支持以下类型,无需任何序列化开销:
- 整数类型:[
u8
], [u16
], [u32
], [u64
],u128
, [i8
], [i16
], [i32
], [i64
],i128
- 基本类型:
()
,&str
,String
,bool
- 二进制数据:u8 切片 (
&[u8]
), 字节向量 (Vec<u8>
), 和字节数组 ([u8; N]
)
鸣谢
特别感谢heed crate的作者们,他们的启发工作对OKV的开发产生了重大影响。
许可证
您可以选择在Apache License, Version 2.0或MIT许可证下使用。
除非您明确表示,否则根据Apache-2.0许可证定义的,您有意提交给OKV的任何贡献,将按上述方式双许可,不附加任何额外的条款或条件。
依赖关系
~0.4–10MB
~102K SLoC