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

cachemap

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

1 个不稳定版本

0.1.0 2021 年 4 月 14 日

#338缓存

MIT 许可证

7KB
104

CacheMap

CacheMap 是一个用于并发缓存值的抽象数据类型。

cache 函数将在映射中查找值,或者使用提供的函数生成和存储一个新的值

示例

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

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

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

特性 🌞

  • 可以并发缓存值(使用 &CacheMap<K,V> 而不是 &mut CacheMap<K,V>
  • 返回的引用使用映射的生命周期,因此客户端可以避免使用智能指针
  • 客户端可以选择获取 Arc<V> 指针,以防值需要超出映射的生命周期
  • 值可以作为 Arc<V> 添加,允许使用无大小值,并重用来自其他地方的 Arc<V>

不足之处 💧

具有糟糕策略的缓存就是内存泄露的另一种说法

此映射仅提供一种从缓存中删除内容的方法:丢弃整个映射。

依赖关系

~210KB