有人知道除了MS ASP.NET缓存和ENTLib之外的进程内缓存库,至少有两个功能: - 到期时间; - 对象依赖。
答案 0 :(得分:1)
我为内存缓存实现了线程安全的伪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中缓存对象图(例如,具有引用其他类的属性的类),以便您可以通过简单地更新对象来在依赖关系树中定义明确的节点上逐出对象。您自然会得到一些易于理解且没有依赖周期的东西。
答案 1 :(得分:0)
Codeplex上有一些缓存提供商,SharedCache似乎很有希望:http://sharedcache.codeplex.com/。