我可以在Windows(x64)64位环境下运行Memcached吗?

时间:2008-08-12 14:37:29

标签: c# c++ windows 64-bit memcached

有人知道 IF WHEN HOW 我可以在Windows 64位环境中运行Memcached吗?

我正在建立一个新的托管解决方案,并且更喜欢运行64位操作系统,而且由于它是带有SQL Server DB的ASP.Net MVC解决方案,因此操作系统要么是Windows Server 2003,要么是(跳跃! )2008年。

我知道这可能会引发关于服务器上32位与64位的辩论,但我们只是说我的偏好是64位,并且我有very good个原因。

到目前为止,我已经尝试了很多选项,发现bit help Windows port与32位机器相关(并且我可能会成功添加),但是从原来{ {3}}特定于Win32,在x64上作为服务安装时几乎没有帮助。它还依赖于libevent,我只能获得Win32编译版本。

我怀疑只是在C ++中加载所有这些并且点击“编译”(对于64位)是行不通的,尤其是因为32位和64位架构的复杂差异,但我想知道是否有人在工作让它离开地面?不幸的是,我的专长只在于托管代码(C#),否则我会尝试自己接受这个,但我无法相信我是唯一一个试图让memcached在64位上运行的人Windows服务器....我是吗??

任何帮助或建议表示赞赏......


更新

是的我害怕我仍然在寻找这个问题的答案 - 我所有的努力(用我可怜的C ++技能)来制作一个稳定的构建都失败了 - 我已经破坏了一台服务器和3台虚拟机尝试一下,现在我转向真正的专家。 是否有人计划将其移植到64位?或者你真的建议我使用MS Velocity吗?我对这个想法感到不寒而栗......


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

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

@OJ-非常感谢你的直接回应。我想了很多,但不确定是否有其他人有建议或已经走了这条路线。也许当StackOverflow是LIVE时,更多的人会回复并让我知道这是否正在被调查,虽然我可以尝试自己编译 - 我根本不能“信任”(用我的C ++经验水平)它将在大型可扩展解决方案的关键组件中提供“企业级”可靠性。在我有信心之前,我认为这需要受过教育的干预而不是我未经过抽样的实验方法。我的一点疏忽可能会导致网站崩溃。好吧......直到下一次......

13 个答案:

答案 0 :(得分:51)

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 - 仍然是免费的,但增强了发行版的集群,基于网络的管理/统计UI等(我与他们没有任何关系)请在http://northscale.com/products/memcached.html查看并从以下网址下载:http://www.northscale.com/download.php?a=d

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

更新3:MemBase已与CouchDB合作并生产了一款名为CouchBase的混合产品。他们仍在http://www.couchbase.com/download

提供免费的“社区”版本

答案 1 :(得分:24)

正如人们所知,32位和64位版本由来自membase / couchbase的优秀人员构建/尽管博客网址仍然可用但仍然可以改变:

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

http://blog.couchbase.com/memcached-144-windows-32-bit-binary-now-available

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

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

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

答案 2 :(得分:6)

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/

答案 3 :(得分:4)

最新的二进制文件

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

例如,最新发布版本的二进制文件(写此答案时)his GitHub repository github.com/nono303/memcached。有32位和64位版本。

Memcached作为Windows服务

如果要将其安装为Windows服务,则可以使用例如开源1.5.16 are here

apiVersion: "authentication.istio.io/v1alpha1"
kind: "Policy"
metadata:
  name: jm-cc-service
spec:
  targets:
  - name: jm-cc-service
  peers:
  - mtls: {}
  origins:
  - jwt:
      issuer: "https://xxx-jm.eu.auth0.com/"
      jwksUri: "https://xxx-jm.eu.auth0.com/.well-known/jwks.json"
      trigger_rules:
      - included_paths:
        - prefix: /base/jclient/remoting
  principalBinding: USE_ORIGIN

有关详细信息,请参见Non-Sucking Service Manager

答案 4 :(得分:3)

我个人认为您必须使用64位编译器(显然是在64位计算机上)重新编译应用程序,以便在64位平台上充分利用Memcached。根据代码,这可能不是一件容易的事。如果它是用64位可移植性编写的,那么它可能是一个简单的重新编译。如果没有,那么你可以在进行构建之前进行相当多的修补..然后你必须验证你没有破坏任何东西!

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

话虽如此,它可能值得一试!

祝你好运。干杯!


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

@John Sibly& @DannySmurf:鉴于Memcached的性质及其目标是什么,当然你不想在64位机器上运行32位版本?如果你有一台64位的机器,运行64位版本以充分利用硬件的功能是有意义的。

答案 5 :(得分:3)

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

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

答案 6 :(得分:2)

我只是在64位Windows系统上搜索memcached并找到了这个。到目前为止,还没有任何Win64 memcached版本。但是我刚刚通过cmd用适当的命令启动了memcached.exe,它运行正常。我使用的是Windows Vista 64bit,不知道Vista和服务器版本之间是否存在任何差异。

最诚挚的问候 Fleshgrinder

答案 7 :(得分:1)

Dude,Codeplex是你的朋友 - > check out this port它。它曾经有64位版本,但你可以下载最新版本并编译为64位(非常简单)或查看以前的版本。

答案 8 :(得分:1)

32位版本通过WOW64在64位上运行,但是这个过程仍然限制在2GB,64位版本可以超过一台机器。

答案 9 :(得分:0)

您确定32位版本不只是在64位Windows上运行而不进行修改吗?大多数事情都有。

如果不这样,你真的试过把它编译为64位吗?对人们提出同样问题的一些Google网上论坛等进行了简短的扫描,这表明这可能正是解决此问题的方法。我认为你可能高估了32位和64位Windows之间的差异(至少就编译本机应用程序而言)。

答案 10 :(得分:0)

仅供参考,我无法获得64位版本(从这里http://labs.northscale.com/memcached-packages/)作为服务安装,直到我以管理员身份运行memcached。

我只是去了可执行文件的属性,然后是兼容性选项卡,并选中了“以管理员身份运行此程序”(还有很多其他方法可以做到这一点,但它似乎最简单)

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

安装后也不要忘记启动服务:)

答案 11 :(得分:0)

您总是可以在一个盒子上运行32位memcached进程的多个实例,从而允许该计算机共提供>> 2GB内存空间。

答案 12 :(得分:0)

如果这可以提供帮助,我已经基于this pagedirect link to NorthScale binary)找到的memcached 1.4.5 64位编译完成了一个包装器。

这是一个Windows服务,它在生产环境中运行良好:
https://github.com/eric-b/MemcachedService64