以下是我针对缓存主题考虑的项目:
MemCached Win32
速度
.net 缓存
企业库缓存应用程序块
MemCached Win32:直到最近我才使用MemCached Win32。这类似于网络场(许多服务器提供相同的内容以实现高可用性),但它是一个缓存场。这意味着如果您没有足够的资源来扩大规模,您最初可以将其安装在本地网络服务器上。然后,当您继续前进时,您可以水平扩展(更多服务器)或垂直扩展(更多硬件)。这是从原始 MemCached 移植到 Windows 上的产品。该产品已广泛应用于流量非常大的网站。http://lineofthought.com/tools/memcached http://lineofthought.com/tools/memcached
速度:这是微软对MemCached等产品的回应。 MemCached 已经退出相当一段时间了,Velocity 处于 CTP 模式。我必须说,从我到目前为止所读到的内容来看,这款产品一旦推出,肯定会引起我的注意。但我无法让自己在零记录的 CTP 产品上运行大型生产项目。我已经开始使用它了,但一旦它获得动力,MemCached 甚至无法与那些锁定在 Windows 世界中的人相比!http://blogs.msdn.com/velocity/ http://blogs.msdn.com/velocity/
.NET 缓存:没有理由对标准 .NET 缓存打折扣。它是内置的,可以免费使用,无需(主要)设置。它通过提供在本地内存、单个状态服务器或集中数据库中存储项目的机制来提供灵活性。当您需要多个状态服务器(内存中的缓存)并且不想使用慢速数据库来保存缓存时,Velocity 就会发挥作用。
企业应用块:我远离所有企业应用程序块。它们是重型框架,提供的功能超出了我通常的需求!只要您记得包装所有涉及不属于您自己的代码的内容并遵循简单的编码规则,就可以坚持使用任何其他方法而不是这个方法! (当然,这只是我的意见 - 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 社交网络 ()
安德鲁·西默 www.andrewsiemer.com blog.andrewsiemer.com www.socialnetworkingin.net
Update更改了列出使用 memcached 的站点的链接。谢谢大卫注意到它坏了!