1. 为什么要在Windows上手动编译Redis很多开发者习惯在Linux环境下使用Redis但实际开发中我们经常遇到需要在Windows本地调试的情况。虽然Redis官方提供了Windows移植版但自己动手编译能带来三个明显优势一是可以自由选择版本比如特定漏洞修复的6.0.6版本二是能自定义安装路径和模块加载三是编译过程能帮你真正理解Redis的依赖关系。我最初用预编译包时遇到过路径混乱的问题后来发现手动编译反而更可控。MSYS2这个工具链完美解决了Windows缺少POSIX环境的问题它提供了类似Linux的终端体验还能用pacman管理软件包。下面我会用最直白的步骤带你走通全流程。2. 搭建MSYS2编译环境2.1 安装MSYS2基础组件首先到MSYS2官网下载最新安装包建议选择默认的C:\msys64安装路径。安装完成后不要急着关窗口我们需要先执行基础更新pacman -Syu这个命令可能会要求你关闭窗口重新打开这是正常现象。更新完成后还需要安装编译Redis所需的工具链pacman -S --needed base-devel mingw-w64-x86_64-toolchain git make这里有个坑要注意MSYS2有三个不同的终端MSYS、MINGW32、MINGW64我们必须使用MINGW64这个终端进行操作否则后续编译会出奇怪错误。你可以在开始菜单找到MSYS2 MINGW64的快捷方式。2.2 配置国内镜像加速默认的软件源在国外下载速度可能很慢。我们可以修改/etc/pacman.d/mirrorlist.mingw64文件在最前面添加清华源Server https://mirrors.tuna.tsinghua.edu.cn/msys2/mingw/x86_64/然后执行pacman -Syy刷新缓存。我在公司内网实测下载速度从20KB/s提升到了8MB/s效果立竿见影。3. 获取并准备Redis源码3.1 下载和解压源码包不建议直接git clone最新代码特定版本更稳定。我们直接下载6.0.6的release包wget https://download.redis.io/releases/redis-6.0.6.tar.gz tar -zxvf redis-6.0.6.tar.gz cd redis-6.0.63.2 处理Windows特有的补丁Redis原生是为Linux设计的在Windows上需要两个关键调整修改src/Makefile文件找到以下行并修改CC gcc 改为 CC gcc -stdgnu99创建src/win32fix.h头文件内容如下#ifndef __WIN32FIX_H__ #define __WIN32FIX_H__ #include winsock2.h #include ws2tcpip.h #endif这些修改主要是解决Windows下网络套接字和C标准兼容性问题。我曾经漏掉第二步导致编译通过但运行时崩溃浪费了两小时查问题。4. 编译与安装实战4.1 执行编译命令现在可以开始正式编译了依次执行make distclean make -j$(nproc)-j参数表示使用多核编译nproc会自动获取你的CPU核心数。我的i7-11800H笔记本大约3分钟就能完成编译。如果遇到错误建议先执行make distclean再重试。编译成功后你会看到提示Hint: Its a good idea to run make test。不过在Windows环境下测试套件可能无法完全运行我们可以跳过直接安装。4.2 自定义安装路径默认make install会装到/usr/local我们可以指定自定义路径make PREFIX/opt/redis-6.0.6 install安装完成后关键文件分布如下/opt/redis-6.0.6/bin/ 可执行文件/opt/redis-6.0.6/etc/ 配置文件模板/opt/redis-6.0.6/share/ 文档和脚本建议把/opt/redis-6.0.6/bin添加到系统PATH环境变量这样就能在任何位置运行redis-server了。5. 运行与配置技巧5.1 首次启动服务测试最简单的启动方式redis-server --daemonize yes如果看到Redis logo和端口信息说明服务已经后台运行。可以用redis-cli ping测试连通性正常会返回PONG。5.2 解决常见问题我遇到最多的问题是端口占用和内存配置。如果6379端口被占用了可以这样指定新端口redis-server --port 6380 --daemonize yes对于Windows下的内存管理建议在redis.conf中修改这两个参数maxmemory 256mb maxmemory-policy allkeys-lru因为Windows不像Linux有overcommit机制不限制内存的话Redis可能会耗尽系统资源。曾经有次我的开发机因为Redis占用16GB内存直接卡死加了限制后就稳定多了。6. 进阶配置与优化6.1 注册系统服务想让Redis开机自启可以用nssm工具创建Windows服务nssm install Redis C:\opt\redis-6.0.6\bin\redis-server.exe C:\opt\redis-6.0.6\etc\redis.conf nssm start Redis6.2 性能调优建议在Windows上跑Redis要注意几个关键点关闭透明大页在redis.conf设置disable-thp yes适当调高TCP backlogtcp-backlog 2048如果做开发测试可以启用save 关闭持久化提升性能我本地用这个配置跑基准测试SET操作能达到8万QPS完全能满足开发需求。当然生产环境还是建议用Linux服务器Windows版主要优势在于本地调试方便。