#共享内存 #存储 #shm #进程间 #ramfs #共享数据 #数据访问

shmap

基于Unix共享内存文件(shm)的键值存储,用于在程序重启间持久化状态。

12个版本

0.4.6 2024年5月26日
0.4.5 2023年12月23日
0.4.4 2023年8月31日
0.4.3 2023年5月23日
0.4.1 2022年5月8日

#37数据库实现

Download history 147/week @ 2024-05-24 18/week @ 2024-05-31 5/week @ 2024-06-07

每月 764 次下载

MIT/Apache

36KB
785 代码行

Shmap

基于Unix共享内存文件(shm)的键值存储,用于在程序重启间持久化状态。

特性

  • 项存储在Unix共享内存中:它使用shm_open在ramdisk (/dev/shm)中创建文件,然后使用mmap将它们映射到内存中。

  • 通过named-lock互斥锁提供了对项的并发访问。

  • 可以通过serde(bincode)透明地序列化值,因此不要忘记使用serde_bytes来启用对&[u8]Vec<u8>的优化处理!

  • 您可以使用AES256-GCM加密来保护您的数据。

  • 您可以添加TTL,这样在超时后您的项将不再可用。

示例

use shmap::{Shmap, ShmapError};
use std::time::Duration;

fn main() -> Result<(), ShmapError> {
    let shmap = Shmap::new();

    shmap.insert("key", "value")?;
    let value = shmap.get("key")?;

    assert_eq!(Some("value".to_string()), value);

    // It is strongly advised to use TTL to avoid using too much RAM
    shmap.insert_with_ttl("key", "temporary_value", Duration::from_secs(60))?;

    Ok(())
}

依赖项

~3–28MB
~403K SLoC