我正在使用一个内存存储库,该存储库根据time / ttl撤消密钥,但是根据内存限制,它永远不会疏散任何内容。
我目前有一个对象,它几乎是ConcurrentDictionary
的包装器,带有“vacuum”方法,必须定期调用。这很好用,但我不禁觉得.Net中的某些内容对我有用吗?有没有像MemoryCache这样没有基于内存大小的疏散的东西?
答案 0 :(得分:2)
您可以使用.NET的MemoryCache
类,设置任意高的内存限制,如此(此示例将限制设置为可用内存的75%;设置您可以找到的百分比):
var maxCache = new MemoryCache("MaxCache", new NameValueCollection {{"PhysicalMemoryLimit", "75" }});
然后使用CacheItemPolicy
类指定滑动过期。
例如,要设置10分钟的滑动到期时间,请使用:
CacheItemPolicy policy = new CacheItemPolicy();
policy.SlidingExpiration = new TimeSpan(0, 10, 0);