当前位置:  开发笔记 > 编程语言 > 正文

使用Windows和.NET进行Memcached

如何解决《使用Windows和.NET进行Memcached》经验,为你挑选了6个好方法。

有没有人已经在Windows环境中实现memcached用于生产?因为我读过很多博客,所以不建议在Windows中运行memcached,尤其是生产用途,例如在windows上运行memcached.

还有一件事,哪个memcached客户端很适合用c#和.net 3.5?我找到了许多替代品,如Memcached Providers @ Codeplex,Beitmemcached和memcached provider @ Sourceforge



1> Cherian..:

为什么需要在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


TCO如何在Windows上成倍增长?许可成本随机器数量呈线性增长.但是,当你考虑到硬件成本,机架空间和电力,支持合同和运营商工资时,Windows的许可成本非常低,坦率地说.
只是为Cherian的论点添加一个反驳.想要在Windows中托管的驱动因素可以是系统管理员的专业知识.例如,没有资源聘请*nix管理员只是为了调出一个memcached框的小型商店可以从公司已经精通的平台(即Windows)上托管获益.
Downvoted,因为它没有解决实际问题.如果它解决了OP的问题,也许应该重写这个问题?
谢谢你的回答,这就是我的期待.
我会回答这个问题,因为它确实没有解决OP要求的任何问题,但是他说这是他特别想要的.

2> mythz..:

我很惊讶这里没有人提到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的



3> Nicholas Pia..:

由于Velocity当时不存在,我使用了一个memcached端口到Windows为我工作的公司Skiviez.它主要仅用于为同一台机器上的多个工作进程提供集中式缓存.它现在在一个看起来适度使用的电子商务网站上运行了大约18个月(约18,500次点击/天).我使用的客户端是Enyim集成为iBATIS.NET的缓存提供程序.该客户似乎运作良好; memcached客户端也不是很复杂.

如果我不得不再次这样做,我可能会看看Velocity,如果我致力于继续在Windows上使用我的分布式缓存解决方案.但它现在正在运作,所以我不打算触摸它.

(旁白:从那时起,我通过向Cache*数据库中的关键表添加某些列来消除对缓存的大部分需求,这些关键表每天晚上由计划任务更新.这最终减少了对初始资源的压力,从最初开始通过将缓存的结果保存在memcached中,通过查询数据库中的内存可用性的后续压力来达到CPU时间.当访问数据的缓存版本而不是计算出来时,它还使代码更加明确.飞行版本.我确信你有很多理由使用分布式缓存,但总是值得一试后退一步并质疑你是否真的需要它!)



4> lomaxx..:

我不知道你正在做什么项目,但你可能想看一下Microsoft Velocity项目 从页面:

"Velocity"是一个分布式内存应用程序缓存平台,用于开发可扩展的高性能应用程序."Velocity"可用于缓存任何公共语言运行时(CLR)对象,并通过简单的API提供访问."Velocity"的关键方面是分布式缓存性能,可扩展性和可用性.

我已经看过几个demo了,看起来它与.net框架非常好的集成.

客户端API的问题在于,您仍然需要使用LAMP堆栈在另一个盒子上运行memcached实例.使用速度意味着您仍将在同一堆栈上运行,并且在.net平台上进行更紧密的集成.

话虽如此,如果您想将速度用作其他.net应用程序的缓存,您可能会发现自己必须编写自己的API来公开速度数据以供使用.


使用LAMP堆栈?你不是指"使用Linux",因为你不需要Apache,MySQL或PHP来运行memcached.

5> 小智..:

速度管理需要更多,但它远远超过memcached.我不是反记忆的,不是最重要的,它很棒.但是,向前发展,纯粹基于.NET的新项目是疯狂的,即使在目前尚未发布的状态下也不会利用Velocity.



6> kay.one..:

看看SharedCache.它的开源,易于使用且非常可靠.

高性能,分布式内存对象缓存系统,本质上是通用的,但旨在通过减轻数据库负载来加速动态Web和/或赢得应用程序.不要忘记访问我们的网站http://www.sharedcache.com

推荐阅读
赛亚兔备_393
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有