90

有谁知道如果何时如何Memcached在 Windows 64 位环境中运行?

我正在设置一个新的托管解决方案,并且更喜欢运行 64 位操作系统,因为它是一个带有 SQL Server DB 的 ASP.Net MVC 解决方案,所以操作系统要么是 Windows Server 2003,要么是(希望!)2008。

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

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

我怀疑简单地在 C++ 中加载所有这些并点击“编译”(对于 64 位)是行不通的,尤其是因为 32 位和 64 位架构的复杂差异,但我想知道是否有人正在努力解决这个问题地面?不幸的是,我的专长仅在于托管代码 (C#),否则我会尝试自己承担这一点,但我不敢相信我是唯一一个试图让memcached在 64 位 Windows 服务器上运行的人。 ..我吗?


更新

是的,恐怕我仍在寻找这个问题的答案——我所有的努力(用我可怜的 C++ 技能)来建立一个稳定的构建都失败了——我已经破坏了一台服务器和 3 个虚拟机只是在尝试,所以现在我求助于真正的专家。有人打算将其移植到64位吗?还是您真的建议我改用 MS Velocity?一想到我就不寒而栗。


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

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

@OJ - 非常感谢您的直截了当的回应。我想了很多,但不确定其他人是否有建议或已经走这条路。也许当 StackOverflow 上线时,会有更多人回复并让我知道这是否正在研究,尽管我可以尝试自己编译它 - 我根本无法“相信”(以我的 C++ 经验水平)它将在大型可扩展解决方案的关键组件中提供“企业级”可靠性。我认为这需要有教养的干预,而不是我未经消毒的实验方法,然后我才能有信心。我的一个小小的疏忽可能会导致网站瘫痪。哦,好吧……直到下一次。

4

13 回答 13

53

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 的管理/统计 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提供免费的“社区”版本

于 2010-03-01T15:12:00.593 回答
25

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

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

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

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

于 2012-03-21T14:19:03.717 回答
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/

于 2012-04-05T09:36:45.500 回答
6

最新的二进制文件

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

例如,最近发布的版本(在撰写此答案时)1.5.16 的二进制文件在此处。有 32 位和 64 位版本。

Memcached 作为 Windows 服务

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

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

有关详细信息,请参阅文档

于 2019-08-07T08:55:26.220 回答
4

我有一个用于 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 内存。

于 2011-01-09T16:59:55.970 回答
3

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

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

话虽如此,也许值得试一试!

祝你好运。干杯!


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

@John Sibly & @DannySmurf:考虑到 Memcached 的性质和它的目标,你肯定不想在 64 位机器上运行 32 位版本吗?如果您有一台支持 64 位的机器,那么运行 64 位版本以充分利用硬件的功能将是有意义的。

于 2008-08-13T02:30:09.480 回答
2

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

最诚挚的问候 Fleshgrinder

于 2009-03-04T19:44:40.717 回答
1

伙计,Codeplex是你的朋友 ->看看它的这个端口。它曾经有一个 64 位版本,但你可以下载最新版本并编译为 64 位(很容易)或查看以前的版本。

于 2008-11-20T04:27:27.160 回答
1

32 位版本通过 WOW64 在 64 位上运行,但进程仍限制为 2GB,使用 64 位版本可以超越单台机器。

于 2009-12-18T17:53:59.937 回答
0

您确定 32 位版本不只是在 64 位 Windows 上运行,无需修改?大多数事情都是这样。

如果做不到这一点,您是否真的尝试过将其编译为 64 位?对人们提出同样问题的几个谷歌群组等进行简要扫描表明,这可能正是解决此问题的方法。我认为您可能高估了 32 位和 64 位 Windows 之间的区别(至少就编译本机应用程序而言)。

于 2008-08-12T14:48:31.440 回答
0

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

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

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

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

于 2010-07-22T17:35:33.633 回答
0

您始终可以在一个机器上运行多个 32 位 memcached 进程实例,从而使该机器能够提供总计 > 2GB 的 memcache 空间。

于 2011-05-04T17:14:51.097 回答
0

如果这有帮助,我已经完成了一个基于通过此页面找到的 memcached 1.4.5 64 位编译的包装器(直接链接到 NorthScale 二进制文件)。

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

于 2012-10-05T20:49:57.440 回答