#key-value-store #lmdb #typed #overhead #wrapper #serde #heed

heed-types

用于与完全类型化的LMDB包装器heed一起使用的类型

16个版本

0.20.1 2024年7月2日
0.20.0-alpha.92023年11月27日
0.20.0-alpha.32023年7月13日
0.20.0-alpha.02023年1月11日
0.7.0 2020年4月26日

#1158数据库接口

Download history 16326/week @ 2024-05-05 19487/week @ 2024-05-12 18690/week @ 2024-05-19 20183/week @ 2024-05-26 22920/week @ 2024-06-02 17626/week @ 2024-06-09 21322/week @ 2024-06-16 23925/week @ 2024-06-23 19168/week @ 2024-06-30 16285/week @ 2024-07-07 12955/week @ 2024-07-14 13394/week @ 2024-07-21 12151/week @ 2024-07-28 10455/week @ 2024-08-04 10554/week @ 2024-08-11 12479/week @ 2024-08-18

46,382 每月下载量
用于 16 个crate(通过 heed

MIT 许可证

22KB
292 代码行

heed

License Crates.io Docs dependency status Build

这是一个以Rust为中心的、开销最小的LMDB抽象,允许在LMDB中存储各种Rust类型,并扩展支持与Serde兼容的类型。

简单示例使用

以下是一个如何以安全且ACID的方式在LMDB中存储和读取条目的示例。有关使用示例,请参阅heed/examples/。要了解更多高级使用技术,请查看我们的Cookbook

use std::fs;
use std::path::Path;
use heed::{EnvOpenOptions, Database};
use heed::types::*;

fn main() -> Result<(), Box<dyn std::error::Error>> {
    let env = unsafe { EnvOpenOptions::new().open("my-first-db")? };

    // We open the default unnamed database
    let mut wtxn = env.write_txn()?;
    let db: Database<Str, U32<byteorder::NativeEndian>> = env.create_database(&mut wtxn, None)?;

    // We open a write transaction
    db.put(&mut wtxn, "seven", &7)?;
    db.put(&mut wtxn, "zero", &0)?;
    db.put(&mut wtxn, "five", &5)?;
    db.put(&mut wtxn, "three", &3)?;
    wtxn.commit()?;

    // We open a read transaction to check if those values are now available
    let mut rtxn = env.read_txn()?;

    let ret = db.get(&rtxn, "zero")?;
    assert_eq!(ret, Some(0));

    let ret = db.get(&rtxn, "five")?;
    assert_eq!(ret, Some(5));

    Ok(())
}

从源码构建

您可以使用此命令克隆存储库

git clone --recursive https://github.com/meilisearch/heed.git
cd heed
cargo build

但是,如果您已经克隆了它并忘记了初始化子模块,请执行以下命令

git submodule update --init

依赖项

~81–660KB
~13K SLoC