关于c#:能否让Memcached在Windows(x64)64位环境中运行?

关于c#:能否让Memcached在Windows(x64)64位环境中运行?

Can I get Memcached running on a Windows (x64) 64bit environment?

有谁知道IF,何时或如何使Memcached在Windows 64位环境上运行?

我正在设置一个新的托管解决方案,并且更希望运行64位操作系统,并且由于它是带有SQL Server DB的ASP.Net MVC解决方案,因此该操作系统将是Windows Server 2003或(希望是)2008。

我知道这可能会引发关于服务器上32位与64位的争论,但是我们只能说我偏爱64位,并且我有一些很好的理由。

到目前为止,我已经尝试了许多选项,并找到了一些与在32位计算机上进行安装有关的帮助(并且可能会添加成功),但是由于原始的Windows端口是Win32专用的,因此这几乎无济于事在x64上作为服务安装时。它还依赖于libevent,为此我只能获得Win32编译版本。

我怀疑仅仅将所有这些都用C ++加载并点击"编译"(针对64位)是行不通的,尤其是由于32位和64位体系结构的复杂差异,但是我想知道是否有人在努力解决这个问题地面?不幸的是,我的专长仅在于托管代码(C#),否则我会自己尝试,但是我无法相信我是唯一尝试在64位Windows服务器上运行memcached的人。 ..我吗?

更新资料

是的,我担心我还在寻找答案-我(用我的可怜的C ++技能)为稳定构建所做的一切努力都失败了-我浪费了一台服务器,而3个VM只是在尝试,所以现在求助于真正的专家。
有人打算将此移植到64位吗?还是您真的建议我改用MS Velocity?我为这个念头发抖。

更新:
@Lars-我确实使用Enyim-很好,但是您指的是客户端,而不是服务器部分。

@DannySmurf-我只能将其作为服务安装在32位OS上。 64位操作系统拒绝安装此Win32服务。当然可以,许多Win32代码可在x64架构上无缝运行,因此您可以在Vista / XP 64等平台上运行32位应用程序(例如Office)或游戏,但这在服务方面并不能直接转换。我不是专家,我怀疑这与同步或需要订阅服务的事件有关,而且我怀疑64和32不能很好地发挥作用。很高兴对此进行更正,但很高兴回答您的问题-是的,我已经尝试过。

@OJ-非常感谢您的直截了当的回复。我想了很多,但不确定是否有人提出建议或已经走了这条路。也许当StackOverflow处于活动状态时,那么会有更多的人响应并让我知道是否正在调查这个问题,尽管我可以自己尝试对其进行编译-我根本无法"相信"(根据我的C ++经验)将在大型可扩展解决方案的关键组成部分中提供"企业级"可靠性。我认为,在我有信心之前,需要采取有教育意义的干预措施,而不是我未经验证的实验方法。我的一点疏忽可能会使网站瘫痪。哦...直到下一次。


North Scale实验室发布了适用于Windows x64的memcached 1.4.4版本:

http://blog.couchbase.com/memcached-windows-64-bit-pre-release-available

http://labs.northscale.com/memcached-packages/

更新:他们最近发布了Memcached Server-仍然免费,但通过群集,基于Web的admin / stats UI等增强了发行版(我与他们没有任何关系),请访问http://northscale.com/ products / memcached.html并在以下网址下载:http://www.northscale.com/download.php?a=d

更新2:NorthScale Memcached不再作为独立下载提供。现在,它们已成为其称为Membase的商业No-SQL DB产品的一部分。可以将其配置为仅在Memcached模式下运行(即无持久性),并且还有100%的免费版本。在此处查看:http://www.membase.org/downloads

更新3:MemBase与CouchDB一起睡觉,并生产了一种混合产品,称为CouchBase。他们仍然在http://www.couchbase.com/download上提供免费的"社区"版本。


众所周知,由好人通过membase / couchbase /所提供的32位和64位版本仍然可用,但博客URL已更改:

作为Windows服务的memcached 1.4.4的32位二进制文??件:

Learn how Couchbase enhances memcached

http://s3.amazonaws.com/downloads.northscale.com/memcached-win32-1.4.4-14.zip

memcached 1.4.4的64位二进制文??件作为Windows服务:

http://blog.couchbase.com/memcached-windows-64-bit-pre-release-available

http://s3.amazonaws.com/downloads.northscale.com/memcached-win64-1.4.4-14.zip

64位版本的正常运行时间错误。

因此,也许您想要的是1.4.2的二进制文件:

http://www.urielkatz.com/archive/detail/memcached-64-bit-windows/

MemCacheDManager附带的32位版本也支持在Windows 2000(无IPv6)上运行:

http://allegiance.chi-town.com/MemCacheDManager.aspx
http://allegiance.chi-town.com/Download.aspx?dl=Releases/MemCacheDManager_1_0_3_0.msi&rurl=MemCacheDManager.aspx

要解压msi,请执行以下操作:

msiexec / a Releases_MemCacheDManager_1_0_3_0.msi / qb TARGETDIR = c: memcached


Win x64的Memcached 1.4.5二进制文件可以在以下位置找到:http://downloads.northscale.com/memcached-1.4.5-amd64.zip

另一个选择是从此处安装Couchbase Server 1.8.0 x64:http://www.couchbase.com/download,捆绑的memcached似乎是1.7.1.1版(听起来像是内部版本,我不知道是哪个版本是真实的)

至于将memcached作为服务运行,本教程可能就足够了:

http://www.richardnichols.net/2010/08/install-memcached-on-windows-server/


最新的二进制文件

NorthScale确实有旧版本(最新版本是1.4.5,从2010年4月开始),但是在他的GitHub存储库github中有一个人为使用Cygwin编译的Windows提供了64位Memcached二进制文件(但他们不需要安装)。 com / nono303 / memcached。

例如,最新版本的二进制文件(撰写此答案时)为1.5.16。有32位和64位版本。

Memcached作为Windows服务

如果要将其安装为Windows服务,则可以使用例如开源的Non-Sucking Service Manager:

1
2
nssm install memcached c:\path\to\memcached.exe
nssm start memcached

有关详细信息,请参见文档。


我有一个用于win32的memcached-1.2.1,最初是从这里下载的:http://jehiah.cz/projects/memcached-win32/(但由于某种原因,它是一个断开的链接)。

这就是我设法在Windows Server 2008 R2(64位)上为Win32运行memcached的方式。
memcached.exe->属性->兼容性->在Windows XP(SP 3)的兼容模式下运行此程序。
请注意,用户Uriel Katz在此讨论中提到此方法仅限2GB的使用内存。


我个人觉得您必须使用64位编译器(显然是在64位计算机上)重新编译应用程序,才能在64位平台上充分利用Memcached。根据代码,这可能并非易事。如果考虑到它是64位可移植性编写的,那么它可能是一个简单的重新编译。如果还没有,那么在构建它之前,您可能需要进行大量修补。然后您必须验证自己没有损坏任何东西!

我认为您根本不会高估32位和64位之间的差异。一个常见的错误是认为作业实际上是简单的重新编译,而实际上不是。存在比大多数人意识到的更多的可移植性问题。仅仅因为应用程序已构建并且您最终获得了二进制文件,并不意味着二进制文件将发挥应有的作用。特别是当它可能与其他32位代码交互时。

话虽如此,值得一试!

祝好运。干杯!

@Lars:我建议在尝试答案之前先阅读问题。

@John Sible&@DannySmurf:鉴于Memcached的性质及其要实现的目标,您肯定不想在64位计算机上运行32位版本吗?如果您拥有支持64位的计算机,则可以运行64位版本以充分利用硬件的功能。


我只是在64位Windows系统上搜索memcached,发现了这一点。到目前为止,还没有任何Win64 memcached版本。但是我只是通过cmd用适当的命令启动了memcached.exe,它运行得很好。我正在使用Windows Vista 64位,不知道Vista和服务器版本之间是否有任何区别。

最亲切的问候
肉体粉碎机


32位版本可通过WOW64在64位上运行,但该过程仍限于2GB,使用64位版本,您可以将其扩展到超过一台计算机。


Dude,Codeplex是您的朋友->检查它的端口。它曾经有64位版本,但是您可以下载最新版本并编译为64位(相当简单),也可以检查以前的版本。


如果这可以帮忙,我根据在此页面中找到的memcached 1.4.5 64位编译(直接链接到NorthScale二进制文件)完成了包装。

这是Windows服务,在生产环境中效果很好:
https://github.com/eric-b/MemcachedService64


您始终可以在一个盒子上运行多个32位Memcached进程实例,从而使该计算机总共可以提供2GB以上的Memcache空间。


仅供参考,在我以管理员身份运行Memcached之前,无法将64位版本(从此处http://labs.northscale.com/memcached-packages/)安装为服务。

我只是转到可执行文件的属性,然后转到"兼容性"选项卡,然后选中"以管理员身份运行该程序"(有很多其他方法可以执行此操作,但这似乎最简单)

然后,我终于能够成功运行:memcached -d install

安装完服务后,别忘了启动服务:)


您确定32位版本无需修改就可以在64位Windows上运行吗?大多数事情都可以。

失败了,您实际上是否尝试过仅将其编译为64位?对人们提出相同问题的一些Google网上论坛等进行的简短扫描表明,这可能正是解决此问题的方法。我认为您可能高估了32位和64位Windows之间的差异(至少就编译本机应用程序而言)。


推荐阅读