.NET的缓存框架

4

我计划开发一个Web服务,需要使用内存缓存,有哪些.NET可用的不同缓存框架?我已经使用了Microsoft Enterprise Library Cache block,并评估了适用于分布式环境的NCache。

我的核心要求是缓存数据的可靠性,如果工作进程重新启动,我考虑使用Enterprise Lib Cache块DB数据存储进行持久化。

还有其他选择吗?

5个回答

5
您可以查看GigaSpaces XAP.NET,它是一个完全分布式和事务性的内存数据网格,可用作缓存等许多其他功能。它也可以是您实际的应用程序服务器,允许您以分布式方式部署应用程序以及分布式缓存。它是高度可用、自我修复和自我管理的网格,您可以根据需要进行扩展和缩减。免责声明-我为GigaSpaces工作。

4

你的缓存是一个易失性数据存储器,你应该编写你的软件,以便它预计缓存不可用。例如:

public DtoThing GetSomeData(string parameters)
{
   if (<check cache for data> == <not there>)
     return <get data from persistent store>
   else
     return <get data from cache>
}

如果您将数据库用作缓存的后备存储,则基本上已经放弃了使用缓存的所有好处。当您说缓存需要可靠时,是指更新需要一致还是数据始终需要在缓存中?如果是前者,只要以这样的方式编写软件,即只有一条路径可以更新数据,然后该路径可以在成功执行其写入持久化数据存储的操作后使缓存失效,就很容易确保发生。

是的,我们可以设计一个应用程序来处理您上面提到的内容,但这仅适用于您仅使用缓存来存储参考数据的情况。如果您想将一些重要数据存储到缓存中,并且这些数据始终需要存在,该怎么办? - BT.
再次强调,您不会直接访问缓存,而是通过适当的业务逻辑层组件访问缓存数据,该组件抽象了内存缓存和持久数据存储的检查。以任何其他方式进行操作都将失败。 - Robert C. Barth

3

我有使用微软的企业库缓存块的经验,并且它对我来说很好用。EntLib的配置有时可能会有点冗长,但它可以完成工作。您为什么要寻找其他解决方案?


我对可靠性因素不太确定,并且从未将其用作数据存储的DB。 - BT.
1
我们在生产环境中使用它,它作为数据存储库对我们非常稳定。此外,还有一个内存设置... backingStoreName="Null Storage"。 - Lucas B

1

我们可以在.NET中使用memcached吗? - BT.
可以的,memcached是一个服务器应用程序,您需要下载其中一个.NET客户端。 - Robert C. Barth

0

针对这种类型的问题有许多潜在的解决方案。您提到了NCache;如果您有时间,请查看Oracle Coherence,这是NCache试图复制的产品 ;-)

我的建议是,除非您需要分布式缓存的好处,否则使用单进程内存缓存会更简单。

而且,如果您感兴趣,这里有一次早期关于NCache起源的讨论:http://www.theserverside.com/news/thread.tss?thread_id=43950


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接