在Windows环境中,已经有人实现了供生产使用的memcached吗?因为我已经读过许多博客,所以不建议在Windows中特别是出于生产目的在Windows中运行memcached,例如在Windows上运行memcached。
还有一件事情,哪个与C#和.net 3.5一起使用的memcached客户端很好?我发现了许多替代方案,例如Memcached Providers @ Codeplex,Beitmemcached和memcached Provider @ Sourceforge
在Windows环境中,已经有人实现了供生产使用的memcached吗?因为我已经读过许多博客,所以不建议在Windows中特别是出于生产目的在Windows中运行memcached,例如在Windows上运行memcached。
还有一件事情,哪个与C#和.net 3.5一起使用的memcached客户端很好?我发现了许多替代方案,例如Memcached Providers @ Codeplex,Beitmemcached和memcached Provider @ Sourceforge
Answers:
为什么需要在Windows上运行memcached?在生产环境中这是一件昂贵的事情。
如果您的代码需要在Windows环境中运行,请获取Windows Memcached客户端并与基于* nix的Memcached机器对话。
在生产环境中,在Server 2003或2008上运行memcached意味着您将获得所有这些许可证。Linux将为您提供所有OSS优势。Windows上的内存缓存使TCO呈线性上升
编辑:
自从我写这个答案已经有1.5年了,此后许多事情都发生了变化。您必须要注意,特别是当类似达斯汀的人发表评论时。
因此,这就是在运行的Windows上获取memcached的方法。从Couchbase(以前称为Northscale)下载适用于Windows的memcached。
通常,如果您打算在同一台生产计算机上运行memcached,则希望在有限的内存中启动它,即定义允许使用memcached的最大内存。
c:\ Program Files \ memcached> memcached.exe -m 128。
在这里,memcached的最大使用量为128 mb。您不希望memcached占用Web服务器上的所有内存。
在您决定扩展内存缓存的那一刻,您需要考虑我之前所说的内容。此外,压缩键值组合中的值。Web服务器通常只消耗很少的CPU使用率(2-3%),与CPU使用率相比,压缩为整个网络带来了很多价值。如果您过于担心常规压缩,请尝试使用LZO
我很惊讶这里还没有人提到Redis-它是功能最丰富,速度最快(在入门级Linux机器上为每秒110,000个SET)的键值数据存储库之一,它具有对字符串的丰富数据结构支持,集,列表,排序集和哈希。
尽管Windows不是官方支持的平台,但它在所有测试通过的情况下都能在Windows下完美运行。我在这里有可用的Windows版本(使用Cygwin):https : //github.com/ServiceStack/ServiceStack.Redis#redis-server-builds-for-windows
它还具有当今几乎所有使用的编程语言的客户端绑定。我维护了一个丰富的开源C#Redis客户端,该客户端具有对任何C#POCO类型,事务支持和线程安全客户端管理器的本机API支持,可以随时通过以下网址将它们放入任何IOC中:https : //github.com/ServiceStack/ServiceStack。雷迪斯
由于当时还不存在Velocity,因此我为我工作的公司Skiviez使用了Windows的内存缓存端口。它主要仅用于为同一台计算机上的多个工作进程提供集中式缓存。现在,在一个电子商务网站上,它的使用情况正常(约18,500次点击/天),运行良好大约18个月。我使用的客户端被Enyim集成为iBATIS.NET的缓存提供程序。那位客户似乎工作得很好;内存缓存的客户端也不是很复杂。
如果我不得不再次这样做,那么如果我致力于在Windows上使用我的分布式缓存解决方案,那么我可能会考虑使用Velocity。但是它现在正在工作,所以我不会去碰它。
(此外:从那时起,我通过将某些Cache*
列添加到数据库中的关键表中来消除对缓存的大部分需求,这些列由每晚计划的任务进行更新。这从一开始就减轻了对整个资源的压力通过将缓存的结果保留在memcached中来查询数据库,从而对数据库的可用性造成了后续压力,从而缩短了CPU时间,并且在访问缓存的数据版本时与在计算时相比,这在代码中更加明确飞行版本。我敢肯定您有很多使用分布式缓存的理由,但是退后一步并质疑您是否真的需要它总是值得一试的!)
我不知道您正在处理的项目是什么,但是您可能想看一下Microsoft Velocity项目 。
“ Velocity”是一个分布式内存应用程序缓存平台,用于开发可扩展的高性能应用程序。“速度”可用于缓存任何公共语言运行时(CLR)对象,并提供通过简单API的访问。“速度”的关键方面是分布式缓存的性能,可扩展性和可用性。
我看过几个演示程序,看起来它与.net框架具有很好的集成。
客户端API的问题在于,您仍然必须使用LAMP堆栈在另一个位置的另一个盒子上运行memcached实例,正如您所指出的那样。使用速度意味着您仍将在同一堆栈上运行,并且整个.net平台之间的集成更加紧密。
话虽如此,如果您想使用Velocity作为其他.net应用程序的缓存,您可能会发现自己不得不编写自己的API来公开Velocity数据以供使用。
看一下SharedCache。其开源,易于使用且非常可靠。
高性能,分布式内存对象缓存系统,本质上是通用的,但旨在通过减轻数据库负载来加速动态Web和/或赢得应用程序。不要忘记访问我们的网站http://www.sharedcache.com
客户端API的问题在于,您仍然必须使用LAMP堆栈在另一个位置的另一个盒子上运行memcached实例,正如您所指出的那样。
完全不对。运行Memcached不需要LAMP(Linux,Apache,MySQL,PHP)堆栈。我现在更喜欢使用内存缓存而不是使用速度,直到速度超出CTP为止。我玩了一段时间,但感觉太笨拙了。我遵循了整个KISS的原则,要保持简单。最简单的就是缓存... Get(键)... Put(键,值)... Destroy(键)。
作为上面提到的Velocity的附录,它由Microsoft作为AppFabric的一部分发布。此处有更多详细信息。
我知道我在这里参加聚会有点晚了,而且已经有了很多好的答案。
我们已在Windows Server上成功使用Membase。它与Memcached 100%兼容,并具有出色的GUI安装程序和Web配置服务器。这非常容易管理。
还包括其他NoSQL功能,这些功能不在此线程的讨论范围内,但是值得一看。他们确实具有开发,测试和(有限)生产服务器的免费许可证。
如果您不希望Membase中有任何其他功能,则该页面仅具有Windows版的Memcached安装。
请按照下面提到的链接查看此问题的解决方案。
我可以在Windows环境中实现供生产使用的memcached。
http://www.codeproject.com/Articles/96698/Implementing-Distributed-Caching-using-Memcached http://www.deanhume.com/Home/BlogPost/object-caching----net-4/37 http ://latelate.blogspot.com/2008/10/using-memcached-from-c.html
如果您有兴趣在Windows上运行内存缓存客户端,那么可以使用另外两个开源服务器来完成这项工作。两者均实现标准的memcached服务器协议,并且均使用Java编写,因此它们可在Windows上运行。