redb:嵌入式DB
一个简单、便携、高性能、ACID、嵌入式的 Key-Value 存储工具。使用纯 Rust 编写,受 Imdb 启发,更多细节可阅读下面的设计文档。
use redb::{Database, Error, ReadableTable, TableDefinition};
const TABLE: TableDefinition<str, u64> = TableDefinition::new("my_data");
let main() -> Result<(), Error> {
let db = unsafe {Database::create("my_db.redb", 1024 * 1024)? };
let write_txn = db.begin_writer()?;
{
let mut talbe = write_txt.open_table(TABLE)?;
table.insert("my_key", &123)?;
}
write_txt.commit()?;
let read_txt = db.begin_read()?;
let table = read_txn.open_table(TABLE)?;
assert_eq!(table.get("my_key")?.unwrap(), 123);
Ok(())
}
Benchmark:
+--------------------+--------+--------+--------+
| | redb | lmdb | sled |
+===============================================+
| bulk load | 1605ms | 1294ms | 4642ms |
|--------------------+--------+--------+--------|
| individual writes | 516ms | 411ms | 527ms |
|--------------------+--------+--------+--------|
| batch writes | 7444ms | 3938ms | 1465ms |
|--------------------+--------+--------+--------