拓十年匠心定制 · 商业建站与技术教学双线并行 咨询热线:400-886-1026 service@lmnt.cn
ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

Windows下Redis安装部署与避坑指南:从下载到可视化连接

Windows下Redis安装部署与避坑指南:从下载到可视化连接

Windows 下跑 Redis 这个事,说简单也简单,说折腾也真能折腾一下午。学校里教 Redis 基本都在 Linux 上,真到公司让你在 Windows 服务器上装一个,或者自己本地开发想在 Windows 下用一个原生 Redis 环境的时候,很多人就卡住了。这不怪你手生,因为 Redis 官方压根就没给 Windows 出过正式安装包,网上教程版本混杂,照着操作经常会在启动失败、连接超时、密码不生效这些环节翻车。

这篇文章把我实际在 Windows 上安装部署 Redis、用可视化客户端管理的完整过程整理出来,包括版本和下载源怎么选、配置里哪些参数必须改、怎么注册成 Windows 服务实现开机自启、可视化工具选哪款、连接配置怎么填,以及现场遇到的各种报错怎么定位和解决。你可以把这份教程当成“照着抄就能跑”的作业,也可以当成一份避坑手册来查。内容适合刚接触 Redis、想在 Windows 搭建本地开发环境的同学,也适合需要在 Windows 服务器上快速部署一套单机 Redis 做内部工具联调的开发。

1. 安装准备:先搞清楚 Windows 上 Redis 的“特殊体质”

1.1 为什么 Windows 装 Redis 总是多一步

先说个很多人不知道的背景:Redis 官方文档里明确写着,项目主要在 Linux 和 macOS 上开发和测试,Windows 并不是官方支持平台。你去 redis.io 官网下载页看,能下到的只有 Linux 源码包和 macOS 相关资源,没有 exe 或者 msi 安装包。这就是大多数新手在 Windows 上装 Redis 时迷茫的根源——他们习惯了“官网下载、双击安装、下一步下一步”的模式,到了 Redis 这突然行不通了。

Windows 上的 Redis 二进制,其实主要来自几个渠道。一是微软以前维护过一个 Redis 的 Windows 移植分支,但那个版本停留在了 3.x 时代,基本不更新了。二是社区开发者维护的编译版本,大家用得比较多的是 tporadowski 在 GitHub 上维护的基于 Redis 5.0.14 的 Windows 版,提供 zip 压缩包和 msi 安装包两种格式。三是一些商业公司做的 Windows 原生 Redis 兼容实现,比如 Memurai,API 基本兼容 Redis,但涉及授权和收费模式,个人和小团队用得少。

这个“官方不提供、社区来补充”的局面,决定了在 Windows 上部署 Redis 不能盲目追求版本号最新,也不能随便从第三方博客的网盘链接下载。后面我会详细说版本和来源怎么判断。

1.2 下载源与版本选择:避免踩到老古董和坑

选版本之前,先想清楚你装 Redis 的目的是什么。

如果你只是学习 Redis 基本命令,或者本机开发时给 Python、Java、Node.js 项目提供一个缓存服务做联调,那 5.0.14 这个社区版完全够用。Redis 5.0 已经引入了 Stream 数据结构、新的链表编码等特性,绝大多数业务场景里的 String、Hash、List、Set、ZSet 操作以及事务、发布订阅、Lua 脚本、持久化机制都已经支持。实际工作中遇到的 90% 应用场景,用 5.0 和用 7.x 的区别并不大。

但如果你要体验 Redis 6.x 以后的 ACL 权限系统、多线程 IO、Redis 7 的 Function、Redis 8 的新特性,Windows 社区版目前做不到,那就需要用 WSL2 装 Linux 发行版再编译安装官方 Redis,或者用 Docker Desktop 跑官方 redis 镜像。这两种方式虽然绕了一些,但能让你直接使用官方主线版本。

下载源方面,我只推荐一个原则:去 GitHub 的 Releases 页面下载,不要从不知道哪里转存的网盘拿。以 tporadowski/redis 这个仓库为例,打开 Releases 页面你会看到带版本号的发布记录,下面挂着 Redis-x64-5.0.14.zip 这样的附件,这种自己仓库发布的文件才值得信任。下载完可以顺手看看文件体积是否正常,解压过程有没有报错,以防压缩包不完整。

1.3 安装前的本机环境自检

正式动手前,花两分钟做个环境自检,能省掉后面一大半的排查时间。

打开命令行(Win + R 输入 cmd 回车),执行下面几个检查:

netstat -ano | findstr "6379"

这行命令的作用是查看 6379 端口有没有被占用。如果你本机已经装过 MySQL 或者其他占用 6379 的软件,Redis 启动时会直接报错“Address already in use”。看到输出结果里没有 6379,说明端口干净,可以进行后续操作;如果有占用的进程,你可以选择换一个端口,比如 6380,或者先处理掉占用进程。

再确认一下你的安装目标目录。Windows 版的 Redis 对中文路径和带空格的路径处理有时候会有奇怪的问题,我建议把解压目录放到比较干净的位置,比如 C:\Redis 或者 D:\Tools\Redis,避免路径里有中文、空格、特殊符号。

最后看一下杀毒软件。Windows 自带的 Defender 或者第三方杀软有时会把 redis-server.exe 这种监听端口的程序误判为可疑程序。虽然不是必然发生,但为了少踩坑,可以把解压目录加入 Defender 的排除项,或者至少在首次启动时放行。这条对很多 Windows 下跑脚本、跑服务的人都有参考意义。

2. 解压版安装五步走:下载、改配置、启动、验证

2.1 下载与目录结构认识

从 GitHub Releases 页面下载 Redis-x64-5.0.14.zip 后,解压到前面准备好的目录里。打开这个目录,你会看到下面这些核心文件,每个都有明确用途:

文件用途
redis-server.exeRedis 服务端主程序,负责启动 Redis 服务
redis-cli.exeRedis 命令行客户端,用来连接和操作 Redis
redis-benchmark.exe性能压测工具,可以测试本地 Redis 的读写性能
redis.windows.confRedis 服务端配置文件,zip 版默认读取这个文件
redis.windows-service.conf一个额外的服务配置文件,注册 Windows 服务时可能用到

这里要注意一个新手常犯的坑:zip 版的默认配置文件叫 redis.windows.conf,不叫 redis.conf。如果你直接双击 redis-server.exe 启动,它不会自动读取 redis.windows.conf,会使用内置默认配置启动,这样你改过的端口号、密码、持久化设置都不会生效。正确做法是启动时显式指定配置文件路径。

目录结构这块不用死记,只要知道“所有行为都是配置文件决定的”这个原则就行。

2.2 必须改的三个配置参数:bind、port、requirepass

用文本编辑器打开 redis.windows.conf,重点看这三个参数,它们是安全性和连通性的关键。

第一个是 bind。Redis 5 默认的 bind 配置是 127.0.0.1,表示只允许本机访问。如果你只在开发机上自用,这个配置其实可以不动,安全性最好。但如果你希望局域网里其他机器也能访问,就需要改成:

bind 0.0.0.0

表示监听所有网络接口。这里提醒一句,bind 0.0.0.0 是把双刃剑,相当于把 Redis 暴露在网络上,如果没设密码,很快就会被扫描器盯上。

第二个是 port,默认 6379。如果你不需要特殊端口,保留即可;如果 6379 被占用,改成 6380、6390 都行。改完端口,客户端连接时的端口参数也要跟着改,命令行和可视化工具里都要注意。

第三个是 requirepass,这就是访问密码。在配置文件里找到被注释掉的这一行:

# requirepass foobared

取消注释,自己设置一个强度足够的密码,比如:

requirepass MyStrongP@ssw0rd

设置密码之后,只有提供正确密码的客户端才能执行命令,这能拦住大部分未授权访问。注意,这个密码是明文存在配置文件里的,所以配置文件本身也要注意权限管理。

这里还牵涉一个 Redis 的特殊安全机制:protected-mode。Redis 默认 protected-mode yes,它会配合 bind 和密码做一套兜底规则:如果没有任何用户配置密码,同时 bind 监听了外部地址,Redis 会拒绝来自外部 IP 的连接。换句话说,当你 bind 0.0.0.0 但又没设置 requirepass 时,外部连接发来的命令 Redis 会直接拒绝。很多教程会简单粗暴地让你把 protected-mode 改成 no,我建议不要这么干——正确做法是设置 requirepass,而不是关闭保护模式。登录授权和 IP 限制属于不同维度的防护,两者配合才是安全底线。

2.3 再顺手搞定持久化与日志路径

配置密码和端口之后,顺手把持久化配置也确认掉,不然以后重启服务发现数据丢了才反应过来就晚了。

Redis 持久化有两种主要方式:RDB 快照和 AOF 追加日志。RDB 是在满足一定条件时把内存数据生成快照文件存到磁盘,Redis 5 默认就是开启的,配置文件里能看到类似:

save 900 1 save 300 10 save 60 10000

意思是 900 秒内至少有 1 个 key 变化就触发一次快照,300 秒内 10 个 key 变化触发,60 秒内 10000 个 key 变化触发。这套默认策略在轻量开发环境下够用,但如果机器突然断电或者进程崩溃,RDB 最后一次快照之后的数据会丢失。

AOF 则是把每一条写命令追加到日志文件里,可以通过配置 appendonly 开启:

appendonly yes appendfilename "appendonly.aof"

AOF 的数据安全性比 RDB 好,但文件会不断变大,Redis 5.0 支持自动重写 AOF,配置文件里有:

auto-aof-rewrite-percentage 100 auto-aof-rewrite-min-size 64mb

意思是 AOF 文件比上一次重写时增长了 100% 且文件已经超过 64MB 时,自动触发重写。开发环境里可以把 appendonly 保持开启,日志不多的情况下文件增长不明显,数据安全性却高很多。

日志路径方面,Redis 5 Windows 版支持 logfile 配置,比如:

logfile "redis_server.log"

配合配置文件里的 dir 参数。dir 表示 Redis 工作目录,很多相对路径都基于这个目录计算。Windows 下路径里的斜杠建议用正斜杠,比如:

dir "C:/Redis"

如果 dir 目录不存在或不可写,持久化文件和日志文件都会出问题。

2.4 注册成 Windows 服务,实现开机自启

配置搞定后,有两种启动方式。一种是临时启动,在命令行里执行:

redis-server.exe redis.windows.conf

窗口会保持在最前端,显示 Redis 的启动日志和运行信息。Ctrl+C 可以正常关闭服务。这种方式的优点是直观,能看到所有日志;缺点是关了命令行窗口就停了,而且开机还得手动打开。

如果你希望 Redis 像 MySQL 一样随 Windows 开机自动运行,那就把它注册成 Windows 服务。Windows 版的 redis-server.exe 自带服务管理参数,在管理员权限的命令行里执行:

redis-server.exe --service-install redis.windows.conf --service-name Redis5

这条命令的含义是:把当前 redis-server.exe 配合 redis.windows.conf 安装成一个名为 Redis5 的 Windows 服务。

然后启动、停止、卸载服务的命令分别是:

redis-server.exe --service-start --service-name Redis5 redis-server.exe --service-stop --service-name Redis5 redis-server.exe --service-uninstall --service-name Redis5

这里有几个特别要注意的细节。第一,注册服务必须用管理员身份打开命令行,否则会报“系统错误 5,拒绝访问”。第二,如果使用 msi 安装包安装 Redis,服务默认会读取 redis.windows-service.conf 这个文件,你修改配置时千万要看清楚改的是哪个文件。我见过有人把 redis.windows.conf 改了半天,服务一点变化都没有,因为服务读的是另一个配置文件。第三,注册服务后再修改配置文件,必须重启服务才生效,光改不重启是没有用的。

服务注册完,验证有没有跑起来,打开服务管理器或者直接看端口状态:

netstat -ano | findstr "6379" redis-cli.exe -h 127.0.0.1 -p 6379 -a MyStrongP@ssw0rd ping

如果服务正常运行且密码正确,ping 命令会返回 PONG。

3. 可视化工具实操:从命令行到图形界面

3.1 先让 redis-cli 把自己测通

很多人喜欢跳过了命令行直接打开可视化工具,这是我的习惯里不太推荐的方式。GUI 工具连接不上时,原因可能是 Redis 服务没启动、端口不对、密码错误、网络不通、防火墙拦截,每一样都要排查。而用 redis-cli 先自测,能快速把问题范围缩小到“服务端有没有正常监听、密码对不对”这两个环节。

进入 Redis 目录,执行:

redis-cli.exe -h 127.0.0.1 -p 6379 -a MyStrongP@ssw0rd ping

其中 -h 指定主机,-p 指定端口,-a 指定密码。如果返回 PONG,说明服务端响应正常,连接参数没有问题。如果返回 NOAUTH Authentication required,说明密码没传或者传错了。如果连接端口超时,那就要检查服务有没有启动、端口有没有被防火墙拦。

命令行窗口中文乱码的问题也顺带提一句,Windows 默认的代码页是 GBK,而 Redis 返回的字符可能是 UTF-8,在 cmd 里查看中文 key 时可能显示乱码。执行:

chcp 65001

可以把当前命令行代码页切到 UTF-8,或者在 Windows Terminal 中使用,体验会好很多。

3.2 可视化工具怎么选:ARDM 与 RedisInsight 实测对比

命令行能通之后,图形界面就是锦上添花。可视化工具的价值在于快速浏览 key、查看数据内容、验证写入结果,不用每一条命令都敲一遍。

我实际用下来,现在最推荐两款:Another Redis Desktop Manager 和 RedisInsight。

老牌的 Redis Desktop Manager 曾经很流行,但免费版本基本停留在 0.9.x,GitHub 上的免费下载也一度停了,维护节奏不如前两者,新环境里建议直接用 ARDM 或者 RedisInsight。

ARDM 全称 Another Redis Desktop Manager,是开源免费的跨平台工具,支持 Windows、macOS、Linux。界面布局清晰,支持多连接管理,支持 SSH 隧道,日常查看 key、搜索 key、查看 TTL、执行命令这些操作都很顺手。体量比较轻,启动速度也快。

RedisInsight 是 Redis 官方出品的可视化工具,功能更强。除了基础的 key 查看和管理,它还提供内存分析、慢日志列表、批量操作、命令执行历史、Key 模式统计等功能。Redis 官方团队更新很勤,如果你要分析线上 Redis 的内存占用或者排查慢命令,RedisInsight 是更好的选择。代价是功能丰富换来的是资源占用偏高,在一些配置低的机器上启动会有点卡。

两款工具怎么选,我的经验是:日常开发联调用 ARDM,简单直接不占资源;需要分析性能、排查慢查询、看内存分布时报 RedisInsight。两款的下载渠道都是官网或 GitHub Releases。

3.3 添加连接、常用功能与误操作提醒

以 ARDM 为例,安装后打开主界面,点击新建连接,需要填写的字段有:

字段说明
Name连接名称,自己起一个容易识别的名字,比如 local-redis
HostRedis 服务所在地址,本机填 127.0.0.1
Port服务端口,默认 6379,如果你改过端口就填修改后的值
Password配置文件里的 requirepass 密码,没有就留空

填写后点击测试连接,正常情况下几秒内会返回连接成功。然后保存连接、双击进入,左侧就能看到数据库下的所有 key。

使用 GUI 工具时最实用的几个功能:一是按前缀搜索 key,比如输入 user:* 可以过滤所有以 user: 开头的 key,比全量扫描效率高很多;二是点击任意 key 后在右侧查看类型和内容,String 会直接显示 value,Hash 会列出所有 field 和 value,List 会展示列表元素;三是可以查看 TTL 剩余过期时间,对排查缓存失效问题很有帮助;四是底部的 Command 面板可以直接执行 Redis 命令,适合查文档或者临时验证某个命令的行为。

这里必须提醒一个 GUI 操作的风险:图形界面删除 key 特别快,而且确实有“确认删除”这种只有一层确认的操作。不少人在界面里用通配符搜索出几百个 key,然后点了批量删除,心态当场就崩了。我的习惯是在任何非本地环境操作时,先用 SCAN 命令或者统计功能确认匹配 key 的数量,再决定要不要批量处理。除非你确定这就是要清理的数据,否则不要用通配符直接批量删除。

4. 高频问题排查:我从现场带回来的避坑经验

4.1 启动闪退或窗口一闪而过

这是 Windows 装 Redis 最常见的问题:双击 redis-server.exe,窗口闪了一下就没了,根本看不清报错内容。

排查第一步,先把启动方式改到命令行里执行,让错误信息留在窗口里:

cd /d C:\Redis redis-server.exe redis.windows.conf

如果配置里端口被占用,命令行会直接提示 Address already in use。如果是配置文件里有语法错误,比如引号没配对、路径错误,也会直接报错不启动。

启动闪退的常见原因有三类。第一类是配置文件路径不对,你双击 exe 但没有带参数,Redis 就不会加载自定义配置,可能因为内置配置和某些环境不匹配而退出。第二类是端口确实被占用,用 netstat -ano | findstr "6379" 看占用进程,然后用任务管理器确认是什么程序。第三类是日志路径或者工作目录 dir 指定的目录不存在,导致 Redis 在启动早期就初始化失败。

定位到具体原因后,对应的处理就是换端口、清理占用、创建缺失目录,然后重新启动。这个过程中不存在“多试几遍就好了”的玄学,报错日志永远是最直接的线索。

4.2 连接超时、拒绝连接与防火墙

服务已经在本地启动,但用远程工具或者另一台机器连接时却超时或拒绝,这种问题通常跟网络访问限制有关。

第一个检查点是 bind 配置。如果你保持默认的 bind 127.0.0.1,那 Redis 只监听本机的回环地址,任何局域网 IP 都访问不了,必须改成 bind 0.0.0.0 或指定网卡地址。

第二个检查点是 protected-mode。当 bind 改了但没设置密码时,Redis 的 protected-mode 会拒绝外部 IP,做安全兜底。配置文件中看到 protected-mode 默认 yes 就说明是这种保护。合理做法是先设置 requirepass,再考虑放开监听地址。

第三个检查点是 Windows 防火墙。即使 bind 和密码都正常,Windows 防火墙默认会拦截外部对 6379 端口的访问。需要在“Windows Defender 防火墙 - 高级设置”里添加入站规则,开放 6379 端口,或者限定只允许特定来源 IP 访问。这一步很关键,很多人配置没问题就是连不上,最后发现是防火墙没放行。

排查这类问题,可以在本机先试试自己连自己,再在另一台机器上用 redis-cli 或 telnet 测端口通不通,逐步缩小范围。

4.3 认证失败、端口占用与进程残留

报错信息里出现 NOAUTH Authentication required 或者 ERR invalid password,说明密码认证环节没过。检查三件事:连接工具里填的密码是否和配置文件里的 requirepass 一致;配置文件改过之后服务有没有重启;如果用了系统服务方式,确认读取的是不是 redis.windows-service.conf 这个文件。

端口占用的问题在 Windows 上还有个典型场景,就是重复启动。比如你前台窗口正在跑一个 redis-server.exe,没关又去注册服务启动,这时候 6379 端口会有两个进程在争抢,新启动的通常会失败。用命令查看所有 redis 进程:

tasklist | findstr redis-server

确认多了哪些进程,用 taskkill 按 PID 关掉,只留一个正常服务。不过 taskkill /F 是强制杀,正常说完服务之前先走 stop 流程,只有进程僵死才 force kill。

4.4 重启后数据消失?持久化没配明白

改完配置重启 Redis,发现之前写入的数据都不见了,这是持久化配置没整明白导致的。

检查思路是:先看 dir 配置指向的工作目录,确认 RDB 文件或者 AOF 文件有没有生成和更新。如果 dir 指向的目录不存在或者没有写权限,持久化就会静默失败,Redis 日志里通常也不会出现明显的报错,只是数据在进程退出时没能存下来。

再看 RDB 和 AOF 是否开启。如果只靠默认 RDB 快照,而写入频率没有达到 save 策略的触发条件,进程一退出,最后一次快照之后的数据就全丢了。业务数据重要的话就开 appendonly yes,能明显降低重启丢数据的风险。

还有一个常见操作误区:修改 appendonly yes 之后,旧的 RDB 文件还在,AOF 文件刚开始可能是空的,重启时 Redis 会以 AOF 为准,这会导致看起来好像“数据没了”。实际上 AOF 会从启动时刻开始记录,之前 RDB 里的数据如果没有转换成 AOF,就会表现为数据缺失。这种场景下需要确认是从早前就开了 AOF,还是中途开启的,中途开启时需要评估是否要先用热迁移方式把老数据补进新机制。

5. 几句过来人的实在话

5.1 开发与生产环境要分离

装完 Redis,配置跑通,很多人会顺手把这个 Windows 环境当成生产服务器长期用。我的看法是:Windows 上的社区 Redis 版本可以做开发、联调、测试,但真正面向外部用户的生产级服务,还是建议放到 Linux 服务器上跑官方主线版本。原因包括社区版的版本滞后、某些模块缺失,以及 Windows 系统本身的资源管理和文件系统缓存机制与 Linux 存在差异。如果你所在的团队确实只能提供 Windows 服务器,那至少要做数据定期备份、监控告警和权限收敛,不能裸奔。

5.2 我的三条操作习惯

最后分享三个我一直在用的习惯。第一个是改配置前先复制一份备份文件,比如 redis.windows.conf.bak,配置没改对可以快速回退,不至于反复从头排查。第二个是任何生产环境操作前先在本地环境还原一遍,Redis 命令的语法、GUI 工具的批量操作,在本地验证过再上真实环境。第三个是不要轻易用 -a 参数在命令行里传密码,因为命令行会被记录到 shell 历史里,测试时无所谓,生产环境尤其是多用户服务器上,尽量用交互式输入或者 GUI 连接方式。

Windows 上部署 Redis 本身就是一个“官方不提供、只能自己动手”的体力活,但只要你理解了版本来源、配置读取逻辑、服务注册方式和持久化机制这四件事,它就和装一个普通软件没有本质区别。遇到问题先看日志,连接不上先分内网外网和防火墙,数据丢失先确认持久化配置,能解决绝大多数问题。

返回列表