redb —— 纯 Rust 的嵌入式键值数据库
redb 是一个简单、便携、高性能、ACID、嵌入式键值存储。
redb 是用纯 Rust 编写的,并受到 lmdb 的一些启发。数据存储在一个 mmap'ed、copy-on-write 的 B-trees 的集合中。有关详细信息,可参阅设计文档。
use redb::{Database, Error, ReadableTable, TableDefinition}; const TABLE: TableDefinition<str, u64> = TableDefinition::new("my_data"); fn main() -> Result<(), Error> { let db = unsafe { Database::create("my_db.redb")? }; let write_txn = db.begin_write()?; { let mut table = write_txn.open_table(TABLE)?; table.insert("my_key", &123)?; } write_txn.commit()?; let read_txn = db.begin_read()?; let table = read_txn.open_table(TABLE)?; assert_eq!(table.get("my_key")?.unwrap(), 123); Ok(()) }
redb 正在积极开发中。
特性:
- 零拷贝、线程安全、基于
BTreeMap的 API - 完全符合 ACID 的事务
- MVCC 支持并发读写器,无阻塞
- 默认 Crash-safe
- Savepoints 和 rollbacks
基准测试:
