#cache #hash-map #sync #data-structures

cachemap2

一个仅插入的并发哈希map,用于缓存值

2个不稳定版本

0.3.0 2024年1月19日
0.2.0 2023年3月21日

#35缓存

Download history 19865/week @ 2024-03-14 29116/week @ 2024-03-21 25759/week @ 2024-03-28 17266/week @ 2024-04-04 18531/week @ 2024-04-11 24348/week @ 2024-04-18 23783/week @ 2024-04-25 24308/week @ 2024-05-02 18116/week @ 2024-05-09 27979/week @ 2024-05-16 26902/week @ 2024-05-23 31531/week @ 2024-05-30 21233/week @ 2024-06-06 22044/week @ 2024-06-13 25237/week @ 2024-06-20 19439/week @ 2024-06-27

95,178 每月下载量
用于 8 个crates (3 直接)

MIT 许可证

17KB
378

CacheMap

CacheMap 是一个用于并发缓存值的结构。

cache 函数将在map中查找值,或使用提供的函数生成并存储新的一个。

这是hclarke/cachemap的一个更新和维护分支。

示例

use cachemap::CacheMap;
	
let m = CacheMap::new();

let fst = m.cache("key", || 5u32);
let snd = m.cache("key", || 7u32);

assert_eq!(*fst, *snd);
assert_eq!(*fst, 5u32);

特性

  • 可以并发缓存值(使用&CacheMap<K,V>而不是&mut CacheMap<K,V>)。
  • 返回的引用使用map的生命周期,因此客户端可以避免使用智能指针。
  • 客户端可以选择启用dashmap特性,它使用内部dashmap并允许
    • 获取Arc<V>指针,如果值需要超出map的生命周期,并且
    • 直接添加Arc<V>,允许使用无大小类型的值,并重新使用来自其他地方的Arc<V>
  • 客户端可以选择启用abi_stable特性,这将从类型派生abi_stable::StableAbi

反特性

  • 没有缓存失效:从CacheMap中删除东西的唯一方法是丢弃它。

依赖关系

~0–6.5MB
~23K SLoC