Memcached与Windows和.NET
有没有人已经实现了在Windows环境下生产使用的memcached? 由于我读过很多博客,所以不build议在Windows中运行memcached,特别是在生产环境中使用,例如在Windows上运行memcached 。
还有一件事,哪个memcached客户端可以很好的使用c#和.net 3.5? 我发现了许多备用scheme,例如Memcached Provider @ Codeplex , Beitmemcached和memcached provider @ Sourceforge
为什么你需要在Windows上运行memcached? 在生产环境中这是一件昂贵的事情。
如果您的代码需要在Windows环境中运行,请获取一个Windows Memcached客户端,并与基于* nix的memcached计算机通信。
在Server 2003或2008上运行memcached的生产环境中,意味着您将获得所有这些框的许可证。 Linux将为您提供所有的OSS好处。 TCO将随Windows上的memcached线性上升
编辑:
自从我写了这个答案已经过去了大约1。5年,很多事情都发生了变化。 你必须注意,特别是像达斯汀这样的人评论。
所以这里是如何在运行的Windows上获得memcached。 从Couchbase(以前称为Northscale)下载用于Windows的memcached 。
通常情况下,如果您计划在同一台生产机器上运行memcached,您希望在有限的内存中启动memcached,即定义memcached允许使用的最大内存。
c:\ Program Files \ memcached> memcached.exe -m 128。
这里的memcached最多可以运行128 MB。 您不希望memcached占用您的Web服务器上的所有内存。
当你决定扩展 memcached的时候,你需要考虑我刚才所说的。 另外压缩键值组合中的值。 Web服务器通常占用非常less的CPU(2-3%),与CPU使用率相比,压缩为整个networking带来了很大的价值。 如果您对正常压缩过于担心,请尝试LZO
令人惊讶的是,这里还没有人提到Redis–它是function最丰富,速度最快的(入门级Linux机箱每秒11万个SET)键值数据存储,具有丰富的数据结构支持string,集合,列表,sorting集合和哈希。
尽pipeWindows并不是官方支持的平台,但它在所有testing通过的情况下都能在Windows下完美运行。 我有Windows版本(使用Cygwin)可在这里: https : //github.com/ServiceStack/ServiceStack.Redis#redis-server-builds-for-windows
它还具有几乎所有当今使用的编程语言的客户端绑定。 我维护了一个丰富的开源C#Redis客户端,它具有对任何C#POCOtypes,事务支持和线程安全客户端pipe理器的本地API支持,这些客户端pipe理器可以在https://github.com/ServiceStack/ServiceStack下载到任何IOC中。; Redis的
由于Velocity当时并不存在,我使用了一个memcached的端口到Windows,为我工作的公司Skiviez。 它主要只是为同一台机器上的多个工作进程提供一个集中caching。 现在在一个电子商务网站上运行正常,大约18个月,这个网站的用处不大(每天约18,500次)。 我使用的客户端是Enyim作为iBATIS.NET的caching提供者集成的。 那个客户似乎工作得不错, memcached客户端也不是很复杂。
如果我不得不这样做,我可能会考虑Velocity,如果我承诺在Windows上保留我的分布式caching解决scheme。 但现在正在工作,所以我不会去碰它。
(另外:从那以后,我通过在数据库中的关键表中添加某些Cache*
列来否定大部分对caching的需求,这些列由每天晚上的计划任务进行更新,从而最终减less了对周围资源的压力通过将caching的结果保存在memcached中,通过查询数据库来查询内存可用性的后续压力,在CPU时间中的初始命中,在caching版本的数据访问时,代码更加明确,我相信你有很多理由使用分布式caching,但总是值得一试,退后一步,质疑你是否真的需要它!)
我不知道你在做什么项目,但是你可能想看一下Microsoft Velocity项目。从页面:
“Velocity”是一个分布式内存应用程序caching平台,用于开发可扩展的高性能应用程序。 “Velocity”可用于caching任何公共语言运行时(CLR)对象,并通过简单的API提供访问。 “速度”的关键方面是分布式caching性能,可扩展性和可用性。
我已经看到了几个演示,它看起来像.net框架非常好的集成。
客户端API的问题在于,您仍然需要使用LAMP堆栈,将memcached实例在另一个盒子上正确地运行。 使用速度意味着你仍然要在同一个堆栈上运行,并且整个.net平台的集成更紧密。
话虽如此,如果您想使用velocity作为其他.net应用程序的caching,您可能会发现自己必须编写自己的API来公开速度数据以供使用。
速度是一个更多的参与pipe理,但它远远更强大,然后memcached。 我不是反memcached,没有一点点,这是伟大的。 但是前进的是,纯粹基于.NET的新项目是疯狂的,即使在目前未发布的状态下,也不会利用Velocity。
看看SharedCache 。 其开源,易于使用和非常可靠。
高性能,分布式内存对象caching系统,通用性,但旨在通过减轻数据库负载来加速dynamicWeb和/或获胜应用程序。 不要忘了访问我们在http://www.sharedcache.com
客户端API的问题在于,您仍然需要使用LAMP堆栈,将memcached实例在另一个盒子上正确地运行。
一点也不真实。 LAMP(Linux,Apache,MySQL,PHP)堆栈不需要运行Memcached。 我现在更喜欢memcached速度,直到速度超出CTP。 我已经玩了一下速度,但发现它太笨重了。 我遵循整个KISS的东西,你知道的…保持简单。 没有什么比caching更简单… Get(key)… Put(key,value)… Destroy(Key)。
作为上面提到的Velocity的补充, 这是由微软发布的AppFabric的一部分 。 更多细节在这里。
在StackOverflow上查看涉及AppFabric和Cache的各种问题。
我知道我在这里参加晚会有点迟,而且已经有很多好的答案。
我们已经在Windows Server上使用了Membase,取得了巨大的成功。 它与Memcached 100%兼容,并有一个很好的GUI安装程序和Webconfiguration服务器构build它。 这是非常容易pipe理。
还有其他的NoSQLfunction,这是超出了这个线程的范围,但值得一看。 他们拥有开发,testing和(有限)生产服务器的免费许可证。
Membase下载
如果您不想在Membase中使用任何其他function,那么该页面上只有一个适用于Memcached的Windows安装程序。
请按照下面提到的链接查看这个问题的解决scheme。
我可以在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 ://latebound.blogspot.com/2008/10/using-memcached-from-c.html
如果您有兴趣在Windows上运行一个memcached客户端,那么有两个额外的开源服务器可以完成这项工作。 两者都实现标准的memcached服务器协议,并用Java编写,因此可以在Windows上运行。
- jmemcached
- quickcached