准备工作
在 Windows 系统下编译 Memcached 需要先确保开发环境配置妥当,安装 Visual Studio,推荐使用 2019 或更高版本,并确保勾选“使用 C++ 的桌面开发”工作负载,这会自动安装必要的编译工具如 MSVC 和 CMake,下载 Memcached 的源代码,可通过 GitHub 官方仓库获取最新稳定版本,或选择特定 release 分支以匹配项目需求,由于 Memcached 依赖 libevent 库,需提前下载其 Windows 兼容版本,建议选择预编译的二进制文件以简化流程,或自行编译源码以确保兼容性。

依赖库安装
libevent 是 Memcached 的核心依赖,负责处理事件通知和网络通信,在 Windows 下,优先选择预编译的 libevent 包,从官网下载对应版本的 DLL 和头文件(如 libevent-2.1.12-stable-release.zip),并将其解压到固定目录(如 C:\libevent),确保系统环境变量 PATH 中包含 libevent 的 bin 目录,以便运行时动态链接,若需自行编译 libevent,可使用 CMake 生成 Visual Studio 项目文件,通过 MSVC 编译并安装,过程中需注意与 Memcached 源码的版本匹配,避免因版本不兼容导致编译失败。
编译 Memcached 源码
准备工作完成后,开始编译 Memcached,解压 Memcached 源码到本地目录(如 C:\memcached),然后打开“开发者命令提示符 for VS”,进入该目录,使用 CMake 生成项目文件,命令为 cmake -G "Visual Studio 16 2019" -A x64 .,-G 指定生成器版本,-A x64 表示编译 64 位版本(若需 32 位则改为 -A Win32),生成成功后,会看到 memcached.sln 解决方案文件。
使用 MSBuild 编译项目,命令为 msbuild memcached.sln /p:Configuration=Release /p:Platform=x64,/p:Configuration=Release 指定发布模式以优化性能,编译过程可能需要几分钟,完成后在 Release 目录下生成 memcached.exe 可执行文件,若需调试,可将配置改为 Debug,但性能会有所下降。

配置与运行
编译完成后,可通过命令行参数配置 Memcached 服务,以守护进程模式运行并监听 11211 端口:memcached.exe -d install -m 512 -p 11211,-d install 表示安装为 Windows 服务,-m 512 分配 512MB 内存,-p 11211 指定端口,安装后,可通过“服务”管理器启动或停止 Memcached,或使用命令 net start memcached 控制。
常见问题排查
编译过程中可能遇到链接错误或找不到库文件,通常是由于 libevent 路径未正确配置导致,检查 CMake 生成的项目文件中 libevent 的包含目录和库目录是否指向正确路径,或通过 -D 参数手动指定,如 -DCMAKE_INCLUDE_PATH=C:\libevent\include -DCMAKE_LIBRARY_PATH=C:\libevent\lib,若运行时提示 DLL 缺失,需将 libevent 的 DLL 文件复制到 Memcached 同目录或系统 PATH 目录中。
相关问答 FAQs
Q1:编译 Memcached 时提示“无法找到 libevent.h”,如何解决?
A1:这通常是因为 libevent 的头文件路径未正确添加到 CMake 的包含目录中,确保 libevent 的 include 文件夹(如 C:\libevent\include)中的 libevent.h 文件存在,并在 CMake 命令中添加 -DCMAKE_INCLUDE_PATH=C:\libevent\include 参数,或在 CMake GUI 中手动设置包含路径。

Q2:编译后的 Memcached 无法启动,提示“Failed to listen on 0.0.0.0:11211”,如何处理?
A2:该错误通常是由于端口被占用或权限不足导致,首先使用 netstat -ano | findstr 11211 检查端口是否被其他程序占用,若被占用则更换端口(如 -p 11212),确保以管理员权限运行命令行或服务安装,避免因权限不足无法绑定端口。