【问题标题】:What are the compelling reasons to use a MemoryCache over a plain old Dictionary<string,object>在普通的旧 Dictionary<string,object> 上使用 MemoryCache 的令人信服的理由是什么
【发布时间】:2011-11-07 06:27:16
【问题描述】:

我刚刚遇到了 MemoryCache,这是 .NET 4 中的新功能。

如果您愿意,我知道它会很有用:

  • 限制缓存的总内存使用量
  • 为放入缓存的对象设置对象到期时间(生存时间)

是否有任何其他令人信服的理由来使用 MemoryCache 而不是标准的Dictionary&lt;string,object&gt;

我有几本关于 C# 和 .NET 的书,但在任何地方都没有参考。

【问题讨论】:

  • 我很困惑。 Dictionary&lt;string,object&gt; 将如何保存在内存中?

标签: c# .net caching


【解决方案1】:

我认为你抓住了两个令人信服的理由 :-)

MemoryCache 有一个驱逐策略,因此它可以丢弃不再需要的条目,或者您不再有足够的内存。

字典不会“丢失内容”。

更新: MemoryCache 是线程安全的,并且具有 AddOrGetExisting 等方法。使用字典,您必须自己同步访问(或使用 ConcurrentDictionary)。

【讨论】:

  • 是的,这个驱逐想法看起来很有趣 - 我看到通过在一个项目上设置 CacheItemPolicy 可以添加一个 SlidingExpiration (如果在给定的时间跨度内没有被访问,则被驱逐)或者你可以还可以添加一些其他自定义条件,例如正在修改磁盘上的文件。
  • 我在 MemoryCache 中错过的一项功能是从文件保存/加载。
猜你喜欢
  • 1970-01-01
  • 2010-11-15
  • 2012-03-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-05-15
  • 2010-10-07
  • 1970-01-01
相关资源
最近更新 更多