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

Jun*_*r M 12 .net memcached caching

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

也许表现更好.

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

Jus*_*tin 24

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

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

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

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

缺点

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

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