有没有人已经在Windows环境中实现memcached用于生产?因为我读过很多博客,所以不建议在Windows中运行memcached,尤其是生产用途,例如在windows上运行memcached.
还有一件事,哪个memcached客户端很适合用c#和.net 3.5?我找到了许多替代品,如Memcached Providers @ Codeplex,Beitmemcached和memcached provider @ Sourceforge
为什么需要在windows上运行memcached?这在生产环境中是一件昂贵的事情.
如果您的代码需要在Windows环境中运行,请获取一个Windows memcached客户端并与基于*nix的memcached机器通信.
在生产环境中,在Server 2003或2008上运行memcached意味着您将获得所有这些盒子的许可证.Linux将为您提供所有OSS优势.使用Windows上的memcached,TCO将呈线性上升趋势
编辑:
自从我写这个答案以来已经有大约1.5年的时间了,很多事情都发生了变化.你需要注意,尤其是像达斯汀这样的人评论.
所以这里是你如何在Windows上运行memcached.从Couchbase(以前的Northscale)下载windows的memcached.
通常,如果您计划在同一台生产机器上运行memcached,则需要在有限的内存中启动它,即定义允许使用的最大内存memcached.
c:\ Program Files\memcached> memcached.exe -m 128.
memcached运行时最多使用128 MB.您不希望memcached占用Web服务器上的所有内存.
你决定扩展 memcached 的那一刻,你需要考虑我之前说的话.另外,在键值组合中压缩您的值.Web服务器通常消耗很少的CPU(2-3%),并且与CPU使用相比,压缩为整个网络带来了很多价值.如果您太担心正常压缩,请尝试LZO
我很惊讶这里没有人提到Redis - 它是功能最丰富,速度最快的(入门级linux盒子每秒110,000 SET)键值数据存储,具有丰富的数据结构支持字符串,集,列表,排序集和哈希.
虽然windows不是官方支持的平台,但它在Windows下完美运行,所有测试都通过.我在这里有windows build(使用Cygwin):https: //github.com/ServiceStack/ServiceStack.Redis#redis-server-builds-for-windows
它还具有几乎所有当前使用的编程语言的客户端绑定.我维护一个丰富的Open Source C#Redis客户端,对任何C#POCO类型,事务支持和线程安全客户端管理器提供本机API支持,这些客户端管理器随时可以放入任何IOC:https: //github.com/ServiceStack/ServiceStack. Redis的
由于Velocity当时不存在,我使用了一个memcached端口到Windows为我工作的公司Skiviez.它主要仅用于为同一台机器上的多个工作进程提供集中式缓存.它现在在一个看起来适度使用的电子商务网站上运行了大约18个月(约18,500次点击/天).我使用的客户端是Enyim集成为iBATIS.NET的缓存提供程序.该客户似乎运作良好; memcached客户端也不是很复杂.
如果我不得不再次这样做,我可能会看看Velocity,如果我致力于继续在Windows上使用我的分布式缓存解决方案.但它现在正在运作,所以我不打算触摸它.
(旁白:从那时起,我通过向Cache*
数据库中的关键表添加某些列来消除对缓存的大部分需求,这些关键表每天晚上由计划任务更新.这最终减少了对初始资源的压力,从最初开始通过将缓存的结果保存在memcached中,通过查询数据库中的内存可用性的后续压力来达到CPU时间.当访问数据的缓存版本而不是计算出来时,它还使代码更加明确.飞行版本.我确信你有很多理由使用分布式缓存,但总是值得一试后退一步并质疑你是否真的需要它!)
我不知道你正在做什么项目,但你可能想看一下Microsoft Velocity项目 从页面:
"Velocity"是一个分布式内存应用程序缓存平台,用于开发可扩展的高性能应用程序."Velocity"可用于缓存任何公共语言运行时(CLR)对象,并通过简单的API提供访问."Velocity"的关键方面是分布式缓存性能,可扩展性和可用性.
我已经看过几个demo了,看起来它与.net框架非常好的集成.
客户端API的问题在于,您仍然需要使用LAMP堆栈在另一个盒子上运行memcached实例.使用速度意味着您仍将在同一堆栈上运行,并且在.net平台上进行更紧密的集成.
话虽如此,如果您想将速度用作其他.net应用程序的缓存,您可能会发现自己必须编写自己的API来公开速度数据以供使用.
速度管理需要更多,但它远远超过memcached.我不是反记忆的,不是最重要的,它很棒.但是,向前发展,纯粹基于.NET的新项目是疯狂的,即使在目前尚未发布的状态下也不会利用Velocity.
看看SharedCache.它的开源,易于使用且非常可靠.
高性能,分布式内存对象缓存系统,本质上是通用的,但旨在通过减轻数据库负载来加速动态Web和/或赢得应用程序.不要忘记访问我们的网站http://www.sharedcache.com