c# - 除了 MS 之外,c# 中的进程内缓存库?

标签 c# caching

除了 MS ASP.NET 缓存和 ENTLib 之外,是否有人知道用于进程内缓存的库至少具有两个功能: - 到期时间; - 对象依赖。

最佳答案

我为内存缓存实现了一个线程安全的伪 LRU。它比使用内存缓存更简单、更快 - 性能非常接近 ConcurrentDictionary(比内存缓存快 10 倍,并且命中的内存分配为零)。

LRU 的用法如下所示(就像字典一样,但您需要提供容量 - 它是有界缓存):

int capacity = 666;
var timeToLive = DateTime.FromMinutes(5);
var lru = new ConcurrentTLru<int, SomeItem>(capacity, timeToLive);

var value = lru.GetOrAdd(1, (k) => new SomeItem(k));

GitHub:https://github.com/bitfaster/BitFaster.Caching

Install-Package BitFaster.Caching

我的建议是在 LRU 中缓存对象图(例如,具有引用其他类的属性的类),这样您就可以通过简单地更新对象来驱逐依赖树中明确定义的节点上的东西。您自然会得到更容易理解且没有依赖循环的东西。

关于c# - 除了 MS 之外,c# 中的进程内缓存库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3683397/

相关文章:

mysql - SQL 查询缓存

c# - System.IO.FileLoadException : Could not load file or assembly 'Pkcs11Interop, 版本=3.3.0.0

caching - Xamarin iOS 从 WKWebView 清除缓存

c++ - 当没有更多引用时如何从缓存中删除智能指针?

version-control - 如何在版本控制中处理网站不断变化的广告模板代码

java - Caffeine LoadingCache 实现的单元测试单独通过,但一起运行时失败

c# - python中的yield == C#中的yield return?

c# - Gridview BoundField 编辑文本框启用多行

c# - 在 C# 中使用 pscp 通过 post 请求在 Windows 和 Linux 之间传输文件

c# - 如何从 JSON 中删除不需要的字符串属性