与.NET Cache系统相比,Memcached有哪些优势?

时间:2011-09-08 12:47:49

标签: .net caching memcached

我看到开发团队中有些人使用Memcached来缓存数据库结果,而不是内置的.NET Framework Cache系统。我不明白为什么他们会使用这个特定的缓存。

也许表现更好。

无论如何,使用Memcached(而不是本机.NET Cache)是否有任何真正的优势?

2 个答案:

答案 0 :(得分:24)

Memcached是分布式的 - 关键是这意味着如果我有一组服务器访问缓存,它们实际上都是从同一缓存读取和写入。内置的.Net缓存没有此功能(至少我知道ASP.Net没有)。

由于每台机器都有自己独立的缓存,这意味着(例如):

  • 如果机器A计算/读取值并将其放入缓存中,则机器B不会从中获益。每台机器都需要独立维护和填充自己的缓存。这也可能会浪费空间,因为许多不同机器的缓存中可能存在相同的条目。
  • 如果机器B使高速缓存条目无效,机器A将不会知道此无效并可能继续使用过时/过期数据

Memcached没有这些问题 - 一旦条目放入缓存中,集群中的所有计算机都可以检索相同的缓存项。使高速缓存中的条目无效使每个人都无效。

<强>缺点

如果您的应用程序需要在一组计算机上运行,​​那么您很可能会从分布式缓存中受益,但是如果您的应用程序只需要在一台计算机上运行,​​那么您将无法从使用中获得任何好处分布式缓存,使用内置的.Net缓存可能会更好。

  • 访问memcached缓存需要进程间/网络通信,这对正在进行的.Net缓存的性能损失很小。
  • Memcached作为外部流程/服务工作,这意味着您需要在生产环境中安装/运行该服务。同样,.Net缓存不需要这个步骤,因为它们是在进程中托管的。

答案 1 :(得分:2)

Memcached的更好比较实际上是Azure App Fabric Caching,它是随.NET 4和Azure添加的。它是一种分布式群集缓存解决方案,适用于群集和云计算。然而,Memcached已经存在了很长一段时间(2003年我认为),所以已经很成熟,并被认为是评判其他人的基准。 Memcached也被移植到几乎所有语言,并可以在Linux或Windows服务器上运行。 Azure缓存仍然相对较新,所以还没有多少人真正使用它。