1 个不稳定版本
0.3.9 | 2024年4月11日 |
---|---|
0.3.8 |
|
0.3.6 |
|
0.3.4 |
|
0.1.1 |
|
#466 在 数据库接口
每月下载量 530
165KB
4K SLoC
redis_rocksdb
使用 Rust 实现的 kv(键/值)嵌入式数据库,存储由 rocksdb 实现
功能列表
- Redis 列表
- 对象,键+字段
- ObjectBit,一个位对象
- 最大/最小二叉堆(零拷贝)
- B + 树(二叉加树)...
示例
更多详情请见 测试
最大堆
use rocksdb::TransactionDB;
use redis_rocksdb::{Heap, RedisRocksdb, WrapTransactionDB};
fn sample(){
let trans_db= TransactionDB::open_default("db_name.db").expect("");
let redis_db = RedisRocksdb::new(trans_db);
let wrap_db = WrapTransactionDB { db: redis_db.get_db() };
let max_heap = RedisRocksdb::max_heap();
let key = vec![0 as u8, 1, 2];
let field = vec![6 as u8, 7, 8];
let value = "data".to_owned();
let _ = max_heap.push(&wrap_db, &field, value.as_bytes());
let _ = max_heap.pop(&wrap_db, &key);
}
对象
use rocksdb::TransactionDB;
use redis_rocksdb::{Heap, Object, RedisRocksdb, WrapTransactionDB};
fn sample(){
let trans_db= TransactionDB::open_default("db_name.db").expect("");
let redis_db = RedisRocksdb::new(trans_db);
let wrap_db = WrapTransactionDB { db: redis_db.get_db() };
let object = RedisRocksdb::object();
let key = vec![0 as u8, 1, 2];
let field = vec![6 as u8, 7, 8];
let value = "data".to_owned();
let _ = object.set(&wrap_db, &field, value.as_bytes());
let _ = object.get(&wrap_db, &key, &field);
}
安装
窗口
- 安装 llvm
- 环境变量:设置 LIBCLANG_PATH=E:/lang/LLVM/lib —— 有时需要重启窗口系统以供 clion 使用
Linux
参考
ssdb-rocks(c++)
ssdb
rust-rocksdb,无事务
ckb-rocksdb,事务
注:在 v0.1.0 版本时使用 ckb-rocksdb,在 v0.2.0 版本中,为了减少一次函数调用,将事务与非事务分别使用不同的接口实现,因此就不再需要使用 ckb-rocksdb
依赖
~24–34MB
~588K SLoC