2011-12-08 25 views
5

我们有一台运行Windows Server 2003的服务器用于我们的生产Web服务器。我们的网站有不同的模块,每个模块都运行在它自己的应用程序池中。这使缓存有点问题,因为每个模块都有自己的缓存,并且经常有多个模块缓存相同的项目。问题在于缓存中的项目在一个模块中被更改时,另一个缓存相同项目的模块无法轻松刷新。对于简单的.NET分布式缓存解决方案的建议

我们的网站是用ASP.NET 4.0编写的,我们使用标准HttpRuntime.Cache对象作为简单的键/值存储缓存数据集,业务对象,集合,列表等。我们不使用任何文件依赖关系,但我们使用时间到期。我们一次只有大约400个用户,所以我们没有太过疯狂。

听起来像某种共享/分布式缓存可以帮助解决这个问题,但我不确定要使用哪一个,或者是否更好地推出我们自己的产品,因为我们不需要很多可用的功能大部分我见过的产品。我见过一些使用WCF的例子,但大多数人都建议不要在生产中使用它们的例子,而我对WCF知之甚少。

我正在寻找一些简单,快速,轻量级,安全的生产运行,最好是免费的,如果可能的话,但它不一定是。它需要在Windows Server 2003上运行&使用ASP.NET 4.0。

任何建议或信息?

回答

7

memcached以及ASP.NET provider是一个热门选择。请记住,尽管在.NET 4.0中推荐的缓存方式是使用新的ObjectCache而不是HttpRuntime.Cache。在.NET框架中有一个内置的内存实现(MemoryCache),您也可以签出implementation for memcached

+0

感谢您的文章,它看起来非常有帮助,我要看看他的实施。 – Billy

+0

分布式缓存的唯一提供者是memcached,其他人不分发。 – ewahner

12

简单,快速,轻量级和安全的声音,就像redis和memcached一样,它可以作为中央缓存非常有效。对于stackoverflow我们使用redis通过BookSleeve(客户端),但大多数商店将工作类似。还有一个AppFabric缓存,但是这相当复杂。虽然

要点:

  • 您的数据将需要以某种方式序列化,如果你正在使用大型对象的缓存
  • (就像一个大的数据表),你需要考虑带宽的影响,或者使其更加细化
  • 您可能会受益于2层缓存(一个本地内存,中央存储为辅助)
  • 这意味着您还需要考虑失效(我们通过redis中的pub/sub API)
+0

感谢您的信息,您是在Windows还是Unix系统上运行?如果Windows使用哪个redis端口?是什么让你用redis通过memcached? – Billy

+0

@比利在生产中我们使用* nix作为服务器,因为“fork”允许更有效的后台保存。不过,这对于400名用户来说可能不是问题。我使用dmajkic二进制文件,它工作正常。重新“为什么” - 更多功能:p –

0

如果价格不是问题,那么NCache可以为you.Its最新版本(4.1 NCACHE)最好的选择与.NET 4.0

3

工作给大车一试。它是一款开源的.NET分布式缓存解决方案,性能卓越。 http://www.getdache.net

+1

它有双重许可证。对于商业项目,您必须购买许可证。 – Tushar

+1

@ haney此网站现在显示房地产列表。我猜这个项目不再可用了? – chester89

相关问题