☰
Windows 原生安装 Redis 并注册为服务实战指南
2026/10/22 19:15:36 网站建设 项目流程

有不少后端开发同事第一次在 Windows 上遇到 Redis 时,第一反应都是“这玩意儿不是 Linux 专用的吗?”包括我自己一开始做本地开发时,也专门为 Redis 装了一台虚拟机,后来嫌太重,又折腾过 Docker,最后发现其实 Windows 下完全可以原生安装 Redis,并且把 redis-server 注册成 Windows 服务常驻后台。这篇文章把我在实际安装、配置、部署成服务过程中踩过的坑和总结出来的完整过程写出来,适合想在 Windows 上做本地开发、自动化测试、演示环境,或者临时起一个缓存服务的同学参考。

我默认你用的是 Windows 10 或 Windows Server 2016 以上系统,对命令提示符有基本了解,最好能区分“普通管理员”和“普通权限”的区别。整个方案不涉及复杂的源码编译,也不需要在 Windows 上装各种依赖环境,只要下载对版本、配置好文件、执行几条命令,就能把 Redis 跑成开机自启的服务。

1. 为什么要在 Windows 上使用 Redis?先弄清需求和版本选择

1.1 Redis 到底能解决什么问题

Redis 本身是一个基于内存的键值存储系统,常见用途包括缓存热点数据、做消息队列的中间层、保存会话状态、实现分布式锁、做排行榜等。和数据库不同,Redis 把数据放在内存里,读写速度快,还支持字符串、哈希、列表、集合、有序集合这些丰富的数据结构。很多人第一次接触 Redis 是在 Linux 服务器上部署生产环境,但在 Windows 上使用 Redis 的场景其实也比想象中多。

比如你在公司里负责一个基于 Windows 的开发机,不想为了一个缓存服务专门开虚拟机,也不想忍受 docker 在 Windows 上切换容器时的磁盘 IO 开销,原生把 Redis 跑起来就是最轻量的方案。再比如一些自动化测试脚本需要连接一个稳定的 Redis 实例做集成测试,把 Redis 注册成 Windows 服务后,可以做到开机自动启动,不用手动去点 exe。还有一个容易被忽略的场景是团队内部工具或教学演示环境,Windows 上快速搭一个 Redis 实例,比让新人去折腾 Linux 虚拟机友好得多。

1.2 Windows 版 Redis 的来源与版本差异

Redis 官方仓库长期没有提供 Windows 原生安装包,你看到的各种 Windows 版本基本来自开源社区或个人维护的编译构建。常见的有基于 Redis 5.x、6.x、7.x 源码编译出来的 Win64 二进制包,也有某些云厂商或技术社区早期维护的版本。需要注意,不同版本之间不仅功能有差异,默认配置文件内容也会不同,甚至连 redis-server 自带的 service 命令参数都略有变化。

我在实际使用中发现一个规律:如果你只需要本机做缓存、队列、锁这类基础功能,选择 5.x 或 6.x 的稳定 Windows 构建版就够了;如果你希望更接近新版 Redis 的特性,比如 Redis Stream、某些新版命令的优化,可以选择 7.x 的构建版。但不要盲目追求最新,Windows 构建版毕竟不是官方主推,新版 Windows 构建往往修复了很多漏洞,但同时也可能因为编译器或运行库问题引入新的兼容性风险。

1.3 下载版本的技术判断与安装环境准备

下载 Redis 时尽可能从可信渠道获取,不要随便在网上下一个来路不明的压缩包。至少做到两点:一看压缩包内是否有完整的 exe、conf 文件和源码文件,二看压缩包是否带哈希校验信息。一个正规的 Windows 构建版本,解压后应该是类似这样的目录结构:

redis/ redis-server.exe redis-cli.exe redis-benchmark.exe redis-check-aof.exe redis-check-rdb.exe redis.windows.conf redis.windows-service.conf

我建议把 Redis 解压到一个没有空格、没有中文、层级不深的目录,比如C:\Redis或D:\Redis。不要放到C:\Program Files这种带空格的路径,也不要放到用户目录下的一长串路径里,否则后面注册服务时容易出现路径解析异常,尤其是一些老版本的 exe 对带空格的路径处理并不好。

安装环境方面,Windows 构建版通常依赖 VC++ 运行库,大部分系统自带,但如果你在双击 exe 时遇到VCRUNTIME140.dll 缺失之类的问题,先自行安装对应版本的 VC++ 运行库,再回来继续操作。这是最基础的一步,但很多人一开始都会忽略。

2. 安装前的准备工作与配置修改

2.1 解压后的目录结构与文件用途

下载到正确的压缩包后,如果用 WinRAR、7-Zip 或系统自带解压工具解压,你会看到上面列出的这些文件。其中:

  • redis-server.exe:Redis 服务端程序,负责启动实例、处理客户端请求、执行持久化。
  • redis-cli.exe:命令行客户端程序,用于向 Redis 发送命令,例如 ping、set、get。
  • redis-benchmark.exe:性能测试工具,可以测试当前实例的读写吞吐量。
  • redis.windows.conf:标准的示例配置文件,通常是后端启动时如果不指定其他配置文件,默认会读取的配置。
  • redis.windows-service.conf:一种预置了 Windows 服务相关设置的配置模板,很多构建版本都会额外带上这个文件。

大部分情况下你只需要关注redis-server.exe、redis-cli.exe和redis.windows.conf这三个文件。redis.windows-service.conf和redis.windows.conf内容差异不大,区别在于前者可能已经调整过daemonize、日志文件路径等参数,直接用它注册服务也行。我更建议以redis.windows.conf为基准,自己改一遍,这样对配置项理解更清晰。

2.2 修改 redis.windows.conf 里的几个核心参数

打开redis.windows.conf前,先复制一份原始文件作为备份。虽然重新下载也能恢复,但备份能让你在改坏配置时立刻回退,省去再次解压的时间。用记事本或 VS Code 打开配置文件后,重点检查以下几个参数,不要只改一个就匆忙启动。

第一是bind。这个参数决定 Redis 服务监听哪个网卡地址。默认配置可能写着bind 127.0.0.1,表示只允许本机访问;如果被改成0.0.0.0,则意味着任何 IP 都能访问你的 Redis,如果你的机器在局域网里,这是一个安全隐患。我建议本地开发一律用bind 127.0.0.1,只有当你明确需要让其他机器连接时才改成内网 IP,并且需要配合后面说的密码和防火墙规则一起考虑。

第二是protected-mode。这个参数默认是yes,意思是当 Redis 没有设置密码、也没有显式绑定内网地址时,会拒绝来自非本机的连接。这是一个友好的安全机制,千万别为了省事把它设成no,除非你在隔离的测试网络里并且完全清楚风险。

第三是port 6379。Redis 默认端口是 6379,如果这个端口被占用,可以改成 6380、6381 等。改端口后,后面连接服务、注册服务参数都要同步修改,否则会出现服务注册成功了但客户端连不上的现象。

第四是requirepass。设置访问密码非常关键。Redis 默认不带密码,只要端口开放到局域网,别人就可以直接操作你的缓存数据。可以在配置文件里加一行:

requirepass yourStrongPassword123

密码不要用纯数字或太短的弱口令,也不能带空格。如果你把密码写在配置文件中,还要注意配置文件编码,Windows 记事本默认保存为 UTF-8 时一般没问题,但不要保存成带 BOM 的 UTF-8,某些情况下可能导致密码首字符异常。

第五是maxmemory和maxmemory-policy。作为缓存使用时,Redis 内存耗尽会导致写命令失败,设置一个合理上限很重要。比如maxmemory 512mb,再设置淘汰策略maxmemory-policy allkeys-lru,表示内存达到上限后按 LRU 算法淘汰一些键。如果拿 Redis 做消息队列或需要严格保留数据,则要根据业务需求选择noeviction或其他策略,不要盲目套用。

第六是持久化相关参数。Redis 虽然以内存存储为主,但可以通过 RDB 快照和 AOF 日志把数据落到磁盘。save 900 1、save 300 10这些参数控制 RDB 快照触发条件;appendonly yes开启 AOF,会在磁盘上记录每一次写操作。Windows 开发环境下,如果只是临时缓存,可以保持默认或关闭 AOF,减少磁盘写入;如果是长期使用的服务,至少开启 RDB 快照,并关注dir参数指定的持久化目录。

第七是dir参数。这个参数决定 RDB 快照和 AOF 文件的保存路径。Windows 下路径写法要注意,反斜杠在配置文件中要写成/或双反斜杠。比如:

dir C:/Redis/data

如果目录不存在,务必要先创建好,否则 Redis 在触发持久化时会报错,甚至启动失败。

2.3 修改配置后的基础验证

改完配置后不要急着注册服务,先用命令行手动跑一遍。打开一个命令提示符窗口,切换到 Redis 解压目录,执行:

redis-server.exe redis.windows.conf

如果配置正确,控制台会打印 Redis 的版本、端口、PID 等信息,并停留在前台运行状态。此时不要关掉这个窗口,再打开另一个命令提示符窗口,执行:

redis-cli.exe -p 6379 -a yourStrongPassword123 ping

如果返回PONG,说明服务端和客户端通信正常。这一步非常重要,因为后面注册成服务后,日志会输出到指定的 logfile 里,一旦启动失败,排查效率远不如现在前台看的直观。

3. 手工启动验证与注册成 Windows 服务

3.1 先用 redis-cli 跑通核心命令再停掉

手工启动的窗口保持运行,再在客户端窗口里测试几个常用命令,确认 Redis 功能正常。我一般按这个顺序做一次快速验证:

  1. 执行info查看服务器基本信息,确认redis_version、process_id、used_memory等关键指标。
  2. 执行config get maxmemory,确认配置是否生效。
  3. 执行set test_key "hello world",再执行get test_key,确认数据写入和读取正常。
  4. 执行dbsize,确认当前键数量正常。
  5. 如果设置了密码,再执行auth yourStrongPassword123确认认证成功。

测试完成后,在服务端窗口按Ctrl+C或直接关掉窗口,让 redis-server 停止运行。不要留着这个前台进程不管,否则后面注册服务时端口会被占用,服务注册成功但启动时会失败,容易让人误以为是服务配置写错了。

3.2 使用官方命令行工具注册服务

Redis 的 Windows 构建版一般在redis-server.exe里内置了服务注册参数,不需要额外安装第三方工具。以管理员身份打开命令提示符(在开始菜单里找到“命令提示符”,右键选择“以管理员身份运行”),然后切换到 Redis 目录,执行:

redis-server.exe --service-install redis.windows.conf --service-name Redis6379 --port 6379

这个命令会把你当前目录下的 redis-server.exe 注册成名为Redis6379的 Windows 服务。配置文件路径用相对路径虽然也可以,但我建议用绝对路径,避免服务启动时工作目录发生变化后找不到配置:

redis-server.exe --service-install C:/Redis/redis.windows.conf --service-name Redis6379 --port 6379

注册完成后系统会提示服务安装成功。接着,使用下面命令启动服务:

redis-server.exe --service-start --service-name Redis6379

如果启动成功,服务就是运行状态。可以在服务管理器里看到这个服务的名称和状态。打开服务管理器的方式是Win + R输入services.msc,回车,然后在列表里找到Redis6379。

这个内置的服务注册命令本质上是在调用 Windows 服务 API,它会创建一个以LocalSystem账户运行的 Windows 服务,并把执行路径指向当前 redis-server.exe,同时在配置里追加--service-run参数。所以你对配置文件做的修改,在服务启动时都会生效。

3.3 服务参数调整与开机自启设置

Redis 注册成服务后,默认的启动类型不一定是“自动”。我需要你打开服务管理器,双击Redis6379这个服务,把“启动类型”改成“自动”。如果当前服务已经是已启动状态,修改完启动类型后不用重启,它下次开机就会自动运行。

需要注意,如果你的 Redis 配置文件中设置了requirepass,服务启动时不会像手工启动那样先在终端里提示你输入密码,它直接加载配置文件,所以密码写在配置文件里即可。另外,某些构建版本在注册服务时如果不显式指定--port,可能默认写成6379,与配置文件端口不一致时,不会导致服务启动失败,但客户端连接时行为可能不符合预期,最好两者保持一致。

如果希望服务在异常退出后自动重启,可以在服务管理器里切换到“恢复”选项卡,把“第一次失败”“第二次失败”都设置为“重新启动服务”。不过我实际用下来,Redis 本身稳定性比较强,因为配置错误导致的启动失败不会表现为“服务运行后崩溃”,而是启动进程直接退出,这时候服务管理器会显示“停止”状态,需要查看日志或手动执行 redis-server 找原因。

3.4 服务停止、卸载与重装

日常维护中,你可能会遇到需要修改端口、密码或持久化路径的情况。修改配置前,先停止服务:

redis-server.exe --service-stop --service-name Redis6379

然后修改配置文件,改完后再启动服务:

redis-server.exe --service-start --service-name Redis6379

如果不再需要这个服务了,可以卸载:

redis-server.exe --service-uninstall --service-name Redis6379

卸载操作前最好把服务先停止,有些版本的 exe 在服务运行时直接卸载会失败,提示服务正在运行。卸载后,Redis 数据文件不会自动删除,如果你确定不需要旧数据,可以手动删除dir参数指定的目录中的 dump.rdb、appendonly.aof 等文件。

4. 常见问题与排查技巧实录

4.1 服务注册后无法启动的高频原因

我在给不少同事排查 Windows 上 Redis 服务问题时,遇到最多的情况是服务注册成功,但一启动就显示“服务没有及时响应启动或控制请求”。这种问题大概率不是 Redis 本身坏了,而是配置或环境问题。常见原因有以下几种。

第一,端口被占用。先排查 6379 是否被其他进程占用,可以用命令:

netstat -ano | findstr 6379

如果看到已经有一个进程监听这个端口,先确认是不是旧 Redis 实例。如果是,需要先停掉旧实例再启动服务;如果不是 Redis,就要换一个端口。

第二,工作目录问题。服务启动时可能不会自动cd到 Redis 目录,如果配置文件中使用了相对路径,比如dir ./或logfile "redis.log",服务启动时找不到文件就会失败。解决方法是把配置文件和持久化路径全改成绝对路径,并确保目录存在。

第三,日志文件路径不可写。因为我们前面可能在 config 里设置了logfile,如果设置的路径不存在,或者服务账户没有权限创建文件,Redis 启动时就会报错。建议在配置里把日志路径指向一个已经存在的目录,比如:

logfile "C:/Redis/redis.log"

第四,配置文件语法错误。少写了一对引号、端口写成字符串、密码带了特殊符号等,都可能导致启动失败。排查时可以去掉服务,改为手工启动,前台窗口会把错误直接打印出来。

4.2 使用 Redis-ClI 与日志文件定位故障

当一个已经注册好的服务无法启动时,有效的排查顺序是:先看服务状态,再看 Redis 日志或 Windows 事件日志,最后重新手工启动。

在 Redis 目录下打开命令行,执行:

redis-cli.exe -p 6379 -a yourStrongPassword123 info server

如果返回Could not connect to Redis,说明服务没启动成功或端口不对。这时查看redis.log,日志会给出具体的拒绝原因或错误堆栈。比如我会看到类似Opening config file: No such file or directory、Can't open the log file: Permission denied、Address already in use这样的信息,逐条去排除。

如果你没有设置logfile,服务启动失败时可能看不到任何日志。那么我建议把logfile先设成"",也就是不输出日志文件,然后手工启动,把错误打印到控制台。检查完再恢复成日志文件路径。

4.3 服务卸载与数据迁移注意事项

升级 Redis 版本时,不需要卸载旧服务再装新服务,但也不建议覆盖安装。更好的做法是:

  1. 先停止旧服务。
  2. 备份旧目录下的配置文件和数据文件。
  3. 把新版 Redis 解压到新的目录。
  4. 把旧配置文件的参数迁移到新配置,不要直接替换,因为新版配置项可能有新增或删除。
  5. 用新版 exe 重新注册服务,注意服务名不要和旧的冲突。

如果已经用旧版注册了服务,注册信息里记录的是旧版 exe 的路径。你直接替换目录里的 exe 文件,服务启动时加载的其实是新 exe,但配置文件可能不兼容。这种“覆盖升级”偶尔能成功,但风险较高,尤其是 Redis 5 升 Redis 6、Redis 6 升 Redis 7 时,配置项变化不小,我建议还是走重新卸载注册的流程。

数据迁移要留意dir目录下的 dump.rdb 文件,直接拷贝到新目录即可让新服务恢复到迁移前的数据。AOF 文件也可以拷贝,但需要确认 appendonly 参数一致,否则可能出现数据文件无法加载的情况。

4.4 常见的端口与访问问题速查表

下面这个表是我整理的高频问题,几乎覆盖了 Windows 下 Redis 服务部署的日常故障。你在排查时直接对照着查,会比盲目搜索快很多。

现象原因处理方法
服务安装成功但启动失败端口被占用或配置路径错误查 netstat,手工启动看报错日志
redis-cli 能连接但提示无密码未设置 requirepass设置密码,重启服务
客户端连接超时Redis 绑定了 127.0.0.1 且客户端在别的机器修改 bind 为内网 IP,或放弃远程连接
远程连接被拒绝protected-mode 开启且未配置密码设置 requirepass 后关闭 protected-mode 或确认 bind 范围
Windows 防火墙拦截6379 入站规则未放行仅在有远程访问需求时添加入站规则
日志文件一直为空logfile 配置未生效或路径错误在配置文件中使用绝对路径
运行一段时间后服务自动退出内存超限或被杀毒软件拦截检查 maxmemory,或关闭杀毒软件对 exe 的拦截
配置文件改了但没生效启动时未指定该配置文件服务启动时确认使用绝对路径配置文件

5. 部署完成后的连接验证与使用建议

5.1 用 redis-cli 验证服务状态与持久化

服务启动成功后,可以再次打开命令行,执行:

redis-cli.exe -p 6379 -a yourStrongPassword123

进入交互式客户端后,执行info查看运行时长、内存使用、连接数等信息。重点看uptime_in_seconds,如果这个数值很大,说明服务一直稳定运行,没有频繁重启。再看rdb_last_save_time,这个时间戳代表最近成功执行 RDB 快照的时间,如果你设置了持久化,可以借此确认快照是否正常触发。

如果要测试持久化效果,可以这样做:向 Redis 写入一个键,稍等或执行一次手动保存命令SAVE,然后打开dir目录,会看到 dump.rdb 文件生成或被更新。接着重启 Redis 服务,再查询这个键,如果数据还在,说明持久化生效。

5.2 从 Java、Python 等语言连接 Windows 上的 Redis

部署成服务后,你的测试代码或业务代码就能直接使用这个 Redis 实例了。用 Python 的 redis-py 库举例,安装依赖后这样写:

import redis r = redis.Redis(host="127.0.0.1", port=6379, password="yourStrongPassword123") r.set("foo", "bar") print(r.get("foo"))

用 Java 的话,如果你使用 Jedis,代码也比较简单:

Jedis jedis = new Jedis("127.0.0.1", 6379); jedis.auth("yourStrongPassword123"); jedis.set("foo", "bar"); System.out.println(jedis.get("foo")); jedis.close();

注意 Windows 上的 Redis 默认只监听 127.0.0.1,如果你的测试代码运行在同一台机器上,直接使用 127.0.0.1 即可。代码运行在别的机器时,除了修改 bind 配置,还要确保 Windows 防火墙允许 6379 端口的入站连接。我建议在不必要时不要开放远程连接,宁可多花点时间部署在内网隔离环境。

5.3 生产环境的建议与 Windows 版 Redis 的边界

把 Redis 部署成 Windows 服务确实很方便,但我也想把边界讲清楚。Windows 构建版 Redis 主要适合开发环境、测试环境、轻量演示环境,不适合直接承担高并发、高可用要求的生产业务。原因也很清楚:

  • Redis 官方没有提供 Windows 生产支持,很多新功能、内存优化、集群模式在 Windows 构建版上要么缺失要么表现不稳定。
  • 哨兵、集群、主从复制在 Windows 构建版上虽然有对应实现,但实际运维难度较大,不如 Linux 下成熟。
  • 内存映射文件、事件驱动模型在 Windows 上表现不如 Linux 高效,极端情况下性能差距明显。

如果你的业务最终要上生产,我更建议把 Redis 部署到 Linux 服务器或容器环境中,Windows 上的实例用来做本地开发就足够了。把生产环境的数据和配置放到 Windows 上,等于给自己埋了一个运维隐患。

6. 写在最后:一些能少踩坑的经验

实际部署 Windows 版 Redis 服务时,我最大的感受是:先把配置跑通,再考虑注册服务。一次成功的服务安装流程,花费时间最多的往往不是下载和安装,而是配置文件和故障排查。注册服务这一步很简单,但如果你在没有手工验证的情况下直接注册,出了问题就多了一层“服务封装”的迷雾,排查起来要绕远路。

另外建议大家养成使用绝对路径的习惯。不只是配置文件路径,日志文件路径和数据目录路径都一样。因为 Windows 服务在启动时的工作目录可能与你的期望不同,一旦依赖相对路径,就会出现服务注册正常但启动失败,而且报错信息还不容易发现是路径原因。

还有一个小技巧。如果在注册服务时遇到服务已经存在或服务名冲突的提示,多半是之前卸载不干净。可以通过sc delete Redis6379清理服务注册信息,再重新安装。sc命令是 Windows 自带的,用管理员命令提示符执行即可。

至此,一套 Windows 下安装 Redis 并部署成服务的方法就完整了。上面这些步骤是我在本地开发环境、公司内部测试服务器上都验证过的,只要跟着做,一般十几分钟就能把 Redis 跑成开机自启的 Windows 服务。后续你可以再按需调整缓存策略、持久化策略,甚至搭建主从复制,但先把基础服务稳定跑起来,后面的操作才有底。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询