以下是我考虑到关于缓存主题的项目:
MemCached Win32
Velocity
.net Cache
Enterprise Library Caching Application Block
MemCached Win32: 最近我一直在使用MemCached Win32。这类似于Web农场(许多服务器为高可用性提供相同的内容),但它是一个缓存农场。这意味着,如果您没有足够的资源进行扩展,则可以最初在您的Web服务器本地安装它。然后,随着您未来的发展,您可以横向(更多的服务器)或纵向(更多硬件)扩展。该产品是从原始的MemCached移植而来,以在Windows上工作。这个产品已经在非常高的流量网站中得到广泛使用。http://lineofthought.com/tools/memcached
Velocity: 这是Microsoft针对像MemCached这样的产品提出的解决方案。MemCached已经存在了相当长一段时间,而Velocity处于CTP模式。我必须说,从我到目前为止所读到的东西来看,一旦它推出,这个产品肯定会吸引我的注意。但是我无法让自己在零记录的CTP产品上运行大型生产项目。不过,我已经开始尝试它,因为一旦它获得动力,对于那些被困在Windows世界中的人来说,MemCached甚至都无法相比!http://blogs.msdn.com/velocity/
.NET Cache: 没有理由忽视标准的.NET Cache。它已经内置并可以免费使用,无需(主要)设置即可使用。通过提供在本地内存、单个状态服务器或集中式数据库中存储项目的机制,它增强了灵活性。当您需要超过一个状态服务器(缓存在内存中)并且不想使用慢速数据库来保存缓存时,Velocity就派上用场了。
Enterprise Application Block: 我避免使用所有的企业应用程序块。它们是沉重的框架,给了我比我通常需要的更多!只要记得包装所有涉及非自己代码的内容并遵循简单的编码规则,就比使用这个更好!(当然仅代表我的观点-MySpace尽可能利用企业应用程序块!)
你不需要提前选择!我通常会创建一个缓存包装器,在我的代码中与Get、Set、Exists、Remove、ListKeys等方法通信。然后,这指向一个底层的缓存抽象层,可以指向MemCached、Velocity或.NET缓存。我使用StructureMap(或选择另一个IoC容器)来注入我想要在给定环境中使用哪种缓存的形式。在我的本地开发框中,我可能会在会话中使用.NET缓存。在生产中,我通常使用MemCached Win 32。但无论如何设置,你都可以轻松地交换各种系统以尝试出最适合自己的。你只需要确保你的应用程序尽可能少地知道关于缓存的任何信息!一旦这个抽象层建立起来,你就可以做一些事情,比如对进出缓存的所有数据运行压缩算法(gzip),这将允许你在缓存中存储10倍的数据量。-
透明地。
如果您有兴趣,我在我的书中介绍了.NET Cache、MemCached Win32、StructureMap和适当的抽象。
ASP.NET 3.5 Social Networking (http://www.amazon.com/ASP-NET-3-5-Social-Networking-Enterprise-ready/dp/1847194788/ref=sr_1_1?ie=UTF8&s=books&qid=1225408005&sr=8-1) Andrew Siemer www.andrewsiemer.com blog.andrewsiemer.com www.socialnetworkingin.net
更新更改了列出使用memcached的网站链接。谢谢David注意到它已经损坏了!