即将过期的并发词典
本文关键字:并发 过期 | 更新日期: 2023-09-27 18:32:56
嗨,我正在研究具有过期功能的并发字典。
我们有一个对象列表,这些对象可以通过添加和删除从许多不同的线程中访问。我们还希望项目的到期时间,例如 60 秒。(如果我们可以侦听一个事件,告诉我们哪些项目已过期并从列表中删除,那就太好了)。
我们还需要查找像字典一样非常快。
该列表将包含数十万个对象。
所以它就像一个ConcurrentDictionary,但具有过期功能。
内存缓存可以是什么东西吗?
还是其他值得关注的东西?
MemoryCache
看起来很理想,尤其是
此类型是线程安全的。
免责声明:我是下面提到的 OSS 包的贡献者之一!
MemoryCache
的缺点是:
- 非泛型(导致基元类型的键和值的装箱/取消装箱)
- 带有膨胀(操作系统性能计数器,启发式和黑魔法,以决定何时在"内存压力"下驱逐未过期的项目等)
- 仅使用字符串键(每次搜索时分配)
- 扫描按键时快速耗尽内存
这些是我们编写 FastCache 的确切原因,写入速度提高了 10 倍,读取速度提高了 6 倍等。基本上就是这样 - 一个即将到期的ConcurrentDictionary
.