4

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

我的核心要求是缓存数据的可靠性,我正在考虑使用 Enterprise Lib Cache 块 DB 数据存储来实现持久性,以防工作进程重新启动。

有什么选择吗??

4

5 回答 5

5

您可以查看GigaSpaces XAP.NET,它是一个完全分布式的内存数据网格中的事务,可以用作许多其他东西的缓存。它也可以是您的实际应用程序服务器,它允许您以分布式方式部署您的应用程序以及分布式缓存。它是高度可用、自我修复和自我管理的网格,您可以按需扩展和扩展。

免责声明 - 我为 GigaSpaces 工作。

于 2012-09-10T09:20:09.373 回答
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>
}

如果您使用数据库作为缓存的后备存储,那么您基本上只是放弃了使用缓存的所有好处。当您说缓存需要可靠时,您是说更新需要保持一致还是数据需要始终在缓存中?如果是前者,很容易确保发生这种情况,只要您编写软件的方式是只有一个更新数据的路径,然后该路径可以在成功执行写入持久化后使缓存无效数据存储。

于 2010-03-04T18:09:58.150 回答
3

我有使用 Microsoft 的 Enterprise Library Cache Block 的经验,它对我来说效果很好。EntLib 配置有时可能有点冗长,但它可以完成工作。您正在寻找其他东西有什么特别的原因吗?

于 2010-03-04T17:33:17.670 回答
1

想到一对:

1)内存缓存

2)企业库缓存应用程序块

于 2010-03-04T17:40:18.350 回答
0

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

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

万一你好奇,一个关于 NCache 起源的早期讨论:http ://www.theserverside.com/news/thread.tss?thread_id=43950

于 2013-08-12T04:03:03.157 回答