三亩地 三亩地SAN MU DI · CODE DIARY
ARTICLE DETAIL

日记详情

真实记录编程学习的某一天,欢迎挑你感兴趣的翻一翻。

Windows系统下Redis 3.2.1历史版本完整安装配置与故障排查指南

Windows系统下Redis 3.2.1历史版本完整安装配置与故障排查指南

1. 项目概述与核心价值

最近在整理一些老项目的本地开发环境,发现一个遗留系统还在依赖Redis 3.2.1这个版本。虽然现在Redis已经更新到了7.x甚至更高,但出于兼容性考虑,有时候我们不得不去安装一个特定的历史版本。在Windows上安装Redis,尤其是像3.2.1这样的老版本,和安装最新版或者使用WSL2的方式有很大不同,网上资料也相对零散。今天我就把自己在Windows 10/11上成功安装并配置Redis 3.2.1的完整过程,以及踩过的坑和解决方案,系统地梳理一遍。无论你是需要复现旧环境进行调试,还是单纯想学习Redis在Windows原生环境下的部署,这篇教程都能给你提供一份可直接“抄作业”的指南。

Redis 3.2.1发布于2016年,是一个比较经典的稳定版本。在Windows上,它主要通过微软开源技术团队维护的“MicrosoftArchive/redis”这个分支来提供支持。整个安装过程不复杂,但涉及到一些细节,比如服务的安装、防火墙配置、以及如何应对一些常见的启动错误。我会从下载开始,一步步带你完成安装、配置、验证和设置为系统服务的全过程,并分享一些让Redis在Windows下运行更稳定的小技巧。

2. 环境准备与安装包获取

2.1 明确系统要求与版本选择

首先需要明确,Redis官方并不直接提供Windows版本的二进制文件。我们使用的安装包来源于微软开源技术团队(Microsoft Open Tech)当年维护的项目,现在该项目已归档,但发布的版本依然可用。对于Redis 3.2.1,我们需要找到对应的Windows版本。

系统要求:理论上支持Windows 7 SP1及以上版本的64位操作系统。在Windows 10和Windows 11上我均测试通过。确保你的系统有.NET Framework 4.5或更高版本,因为Redis的Windows服务包装器依赖它。通常现代Windows系统都已预装。

版本文件辨识:Redis for Windows的发布文件通常是一个.msi安装包或者一个.zip压缩包。对于生产环境或希望以服务方式运行,我强烈推荐使用.msi安装包,因为它能自动完成服务注册、路径配置等繁琐工作,比手动处理要省心得多。

2.2 安全获取安装包

由于源项目已归档,直接从GitHub的发布页面下载是最安全可靠的方式。你需要访问https://github.com/microsoftarchive/redis/releases。在这个页面中,你需要仔细寻找标签(Tag)为3.2.1的版本。发布列表可能很长,可以使用浏览器的页面查找功能(Ctrl+F)搜索 “3.2.1”。

找到正确的发布项后,你会看到几个资产文件。通常我们需要的是Redis-x64-3.2.1.msi。点击即可下载。如果找不到.msi文件,只有一个Redis-x64-3.2.1.zip,那么也可以使用它,但后续的配置步骤会稍多一些,需要手动安装服务。

注意:务必从上述官方归档仓库下载,避免从不明来源获取安装包,以防植入恶意代码。这是环境安全的第一步。

下载完成后,建议右键点击.msi文件,选择“属性”,查看数字签名是否有效,签名者应为“Microsoft Corporation”。这可以进一步验证安装包的完整性。

3. 使用MSI安装包进行安装

3.1 图形化安装向导步骤

双击运行下载好的Redis-x64-3.2.1.msi文件,启动安装向导。

  1. 欢迎界面:直接点击“Next”。
  2. 许可协议:勾选“I accept the terms in the License Agreement”,然后点击“Next”。
  3. 安装位置选择:这一步很重要。默认路径是C:\Program Files\Redis\。我个人习惯将其安装到一个没有空格和中文的路径,比如D:\Redis\,这样可以避免一些潜在的脚本或配置文件路径问题。你可以点击“Browse”进行修改。确定后点击“Next”。
  4. 端口配置:默认Redis服务端口是6379。除非该端口已被占用(比如你机器上已经运行了其他Redis实例),否则保持默认即可。如果端口冲突,安装后可以在配置文件中修改,这里先按默认处理。点击“Next”。
  5. 内存限制设置:这里有一个关键选项“Set Max Memory Limit”。它默认是勾选的,并设置了一个限制值。我的建议是:取消勾选它。在安装阶段就限制最大内存,对于初学者来说,如果设置不当(比如设得太小),很容易导致Redis在使用中报错。我们更倾向于在安装完成后,通过配置文件redis.windows.conf来按需精细化管理内存。取消勾选后点击“Next”。
  6. 添加到环境变量:确保“Add the Redis installation folder to the PATH environment variable”是勾选状态。这能让你在任意命令行窗口直接使用redis-cli等命令,非常方便。点击“Next”。
  7. 准备安装:确认一下设置摘要,然后点击“Install”开始安装。
  8. 安装完成:安装过程很快。完成后,取消勾选“Launch Redis Server on installation completion”(安装完立即启动Redis服务器),我们先不急着启动。点击“Finish”关闭向导。

3.2 安装后的目录结构解析

安装完成后,进入你选择的安装目录(例如D:\Redis\),你会看到以下关键文件和文件夹:

  • redis-server.exe: Redis服务器主程序。
  • redis-cli.exe: Redis命令行客户端,用于连接服务器并执行命令。
  • redis.windows.conf: Redis的主要配置文件。这是我们需要重点关注和修改的文件。
  • redis.windows-service.conf: 另一个配置文件,通常当Redis作为Windows服务运行时,会默认使用这个。两个文件内容基本一致,但服务配置可能有些预设。
  • redis-benchmark.exe: 性能测试工具。
  • redis-check-aof.exeredis-check-rdb.exe: AOF和RDB文件修复工具。

理解这个结构有助于后续的故障排查和手动操作。

4. 核心配置详解与初次启动

4.1 配置文件关键项调优

虽然安装后可以直接启动,但为了更稳定地运行,我们有必要调整几个核心配置参数。用文本编辑器(如Notepad++、VS Code)以管理员身份打开redis.windows.conf文件。找到并修改以下几处:

  1. 绑定地址(bind)

    bind 127.0.0.1

    默认只允许本机连接。如果你需要从局域网内的其他机器访问,可以注释掉这一行(在行首加#),或者改为bind 0.0.0.0注意:改为0.0.0.0会暴露给所有网络接口,请仅在可信的内网环境或配置好防火墙后这样做。

  2. 保护模式(protected-mode)

    protected-mode yes

    bind未设置或设置为127.0.0.1,且未配置密码时,保护模式会阻止外部连接。如果你设置了bind 0.0.0.0并希望允许外部连接,必须同时设置一个访问密码,或者将protected-mode改为no在生产环境中,强烈建议设置密码而非关闭保护模式。

  3. 访问密码(requirepass)

    # requirepass foobared

    找到这一行,去掉开头的注释符号#,并将foobared替换为你自己的强密码。例如:

    requirepass MyStrongPassword123!

    这是保证Redis安全的最低要求。

  4. 最大内存策略(maxmemory-policy)

    # maxmemory-policy noeviction

    Redis达到内存上限后的处理策略。noeviction是默认策略,当内存不足时,新写入操作会报错。对于缓存场景,你可能需要设置为allkeys-lru(移除最近最少使用的键)。根据你的使用场景决定是否取消注释并修改。

  5. 持久化设置:Redis 3.2.1默认启用了RDB快照持久化。在配置文件中可以看到类似下面的段落:

    save 900 1 save 300 10 save 60 10000

    这表示:900秒内至少有1个键被更改,则保存;300秒内至少有10个键被更改,则保存;60秒内至少有10000个键被更改,则保存。你可以根据数据重要性调整这些参数。如果只希望用作缓存,不关心数据丢失,可以注释掉所有save行以禁用持久化,提升性能。

4.2 以应用程序模式启动与验证

修改完配置后,我们先以前台应用程序模式启动一次,验证配置是否正确。

  1. 打开命令提示符(CMD)或 PowerShell,切换到Redis的安装目录

    cd D:\Redis
  2. 指定我们修改过的配置文件启动Redis服务器:

    redis-server.exe redis.windows.conf

    如果一切正常,你将看到Redis的启动Logo,以及一系列日志输出,最后一行应该是:

    [端口号] Ready to accept connections

    这表示Redis服务器已成功启动并在本机6379端口监听。

  3. 保持这个窗口不要关闭(关闭窗口即停止Redis)。新开一个命令提示符或PowerShell窗口,同样切换到Redis目录,启动客户端连接测试:

    redis-cli.exe -h 127.0.0.1 -p 6379

    如果设置了密码,连接后需要先认证:

    auth MyStrongPassword123!

    然后执行一个简单的测试命令:

    set test-key “hello redis 3.2.1” get test-key

    如果返回“hello redis 3.2.1”,说明安装、配置、连接全部成功。

  4. 在第一个窗口按Ctrl+C可以安全地停止Redis服务器。

5. 注册为Windows系统服务

让Redis以后台服务形式运行,是生产环境或长期开发环境的标配。MSI安装包其实已经为我们准备好了服务安装脚本。

5.1 通过脚本安装服务

在Redis安装目录下,你应该能看到一些.sh文件,它们实际上是Windows批处理脚本。我们需要以管理员身份运行命令提示符或PowerShell。

  1. 打开管理员权限的CMD或PowerShell,导航到Redis目录。
  2. 执行服务安装命令。这里要注意,默认服务会使用redis.windows-service.conf这个配置文件。如果你希望服务使用我们刚才精心修改过的redis.windows.conf,有两种方法:
    • 方法一(推荐):将我们修改好的redis.windows.conf复制一份,并重命名为redis.windows-service.conf,覆盖原有的文件。
    • 方法二:在安装命令中指定配置文件路径。
  3. 执行安装命令。假设我们采用了方法一,直接运行:
    redis-server --service-install redis.windows-service.conf --loglevel verbose --service-name Redis321
    • --service-install: 安装服务。
    • redis.windows-service.conf: 指定服务使用的配置文件。
    • --loglevel verbose: 设置日志级别为详细,便于排查问题。
    • --service-name Redis321: 给服务起一个自定义名称,这里叫“Redis321”,以便与可能存在的其他Redis服务区分。如果不指定,默认服务名就是“Redis”。

5.2 服务管理与防火墙配置

安装成功后,你可以在“服务”管理窗口(运行services.msc)中找到名为“Redis321”的服务。

  1. 启动/停止服务:在服务管理界面右键点击“Redis321”,选择“启动”。你也可以在管理员命令行中使用命令:

    net start Redis321 # 启动服务 net stop Redis321 # 停止服务 sc delete Redis321 # 删除服务(需要先停止)
  2. 配置防火墙:如果你需要从其他机器访问这台Redis,必须配置Windows防火墙允许入站连接。

    • 打开“Windows Defender 防火墙” -> “高级设置”。
    • 点击“入站规则” -> “新建规则”。
    • 规则类型选择“端口”,下一步。
    • 特定本地端口输入6379,下一步。
    • 选择“允许连接”,下一步。
    • 配置文件全选(域、专用、公用),下一步。
    • 给规则起个名字,比如“Redis 3.2.1 Port 6379”,完成。

    这样,局域网内的其他机器在知道密码的前提下,就可以通过你的IP:6379来连接了。

6. 常见问题排查与实战技巧

6.1 安装与启动故障排查

问题1:启动服务失败,系统日志报错“Windows could not start the Redis321 service on Local Computer. Error 1067: The process terminated unexpectedly.”

这是最常见的问题。排查步骤:

  1. 检查配置文件语法:配置文件中的任何拼写错误、错误的格式(例如yes写成了true)都会导致启动失败。仔细核对修改过的部分。
  2. 查看Redis日志:Redis服务启动时,日志默认会输出到Windows事件查看器。打开“事件查看器” -> “Windows 日志” -> “应用程序”,筛选来源为“Redis”的事件,查看具体的错误信息。这通常是解决问题的关键。
  3. 端口占用:6379端口可能被其他程序占用。在管理员命令行运行netstat -ano | findstr :6379查看。如果被占用,可以在配置文件中修改port参数,或者停止占用端口的程序。
  4. 内存设置问题:如果在安装时勾选了“Set Max Memory Limit”并设置了一个极小的值(比如10MB),Redis可能因无法分配足够内存而崩溃。建议在配置文件redis.windows.conf中明确设置一个合理的maxmemory值(如maxmemory 1024mb),并搭配maxmemory-policy使用。

问题2:使用redis-cli连接时超时或拒绝连接

  1. 确认服务状态:首先用net start命令或服务管理器确认Redis服务正在运行。
  2. 检查绑定地址:确认配置文件中bind的设置。如果你从本机连接,bind 127.0.0.1是正确的。如果从其他机器连接,需要绑定到0.0.0.0或服务器IP。
  3. 检查保护模式和密码:如果绑定了0.0.0.0,确保已设置密码 (requirepass) 或已将protected-mode设为no安全起见,永远选择设置密码。
  4. 检查防火墙:确认已在防火墙中为6379端口添加了入站允许规则。

6.2 性能优化与稳定性心得

  1. 内存管理是重中之重:Windows版Redis最常遇到的问题就是内存溢出崩溃。务必在redis.windows.conf中设置maxmemory。这个值应该小于你的物理内存,并为系统和其他应用留出足够空间。例如,在8GB内存的机器上,设置为maxmemory 4096mb是比较安全的。同时,根据你的数据特性选择合适的maxmemory-policy(如allkeys-lruvolatile-lru)。

  2. 持久化权衡:RDB持久化在保存快照时可能会引发短暂的延迟。如果对性能要求极高且可以容忍少量数据丢失,可以考虑调慢RDB保存频率(修改save参数)或直接禁用。AOF持久化在3.2.1版本同样支持,能提供更好的耐久性,但会对性能有更大影响。根据业务需求在appendonlyappendfsync参数间做出权衡。

  3. 服务崩溃自动重启:虽然Redis for Windows相对稳定,但仍有小概率因内存等问题崩溃。我们可以利用Windows系统的“服务恢复”功能。在服务属性窗口的“恢复”选项卡中,将第一次、第二次、后续失败都设置为“重新启动服务”,并设置一个重启延迟(如1分钟)。这样可以在服务意外停止时自动恢复。

  4. 升级考量:Redis 3.2.1是一个老版本,缺少许多新特性(如Streams类型、模块系统)和安全更新。仅建议在必须兼容旧客户端或项目的场景下使用。对于新项目,应优先考虑在WSL2或Linux虚拟机中运行更新的Redis版本,或者在Windows上使用更高版本的Redis for Windows分支(如tporadowski/redis维护的版本)。本次部署的核心价值在于掌握特定历史版本在原生Windows环境下的完整生命周期管理方法。

← 返回列表