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 在 数据库实现
每月 764 次下载
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