1. 为什么要在 Windows 10 上折腾 Redis:先想清楚你图什么
先说点实际的。Redis 官方从来就没提供过原生 Windows 版本,官网首页写得很清楚:目前支持的平台是 Linux、macOS 这些。你在官网看到的大标题 Download,点进去能找到 Windows 相关的选项,但它要么指向 WSL,要么指向第三方移植版,这跟很多人的直觉不一样——这也是为什么网上搜“redis下载”“redis windows下载”会出现那么多相互矛盾的教程。
那 Windows 用户就真的没法用 Redis 了吗?不是。目前主流方案是三条路:
- 用第三方移植版本,也就是 tporadowski 在 GitHub 上维护的 redis-windows。它是基于 Redis 5.x 和 6.x 的源码直接编译成 Windows 原生可执行文件,解压即用,最省事。
- 用 WSL2 装 Linux 版 Redis。性能最接近生产环境,还能顺便学 Linux 命令,但对不熟悉终端的同学门槛略高。
- 用 Docker Desktop 跑 redis 容器。适合已经在用 Docker 做开发的人,镜像拉下来就能跑,环境隔离干净。
我的建议是:如果你只是本地开发调试、学 Redis 数据类型、练练分布式锁这类场景,直接用移植版。 如果你的工作流已经重度依赖 Docker 或 WSL,那就别折腾移植版了,直接容器或 WSL 里搞定。不要一开始就纠结“哪种方式更标准”,先问自己一句:我装 Redis 是为了解决什么问题?
如果是为了跑通代码里的缓存逻辑、验证某个数据结构的存取效果、或者跟着面试题把 Redis 的用法过一遍,那 Windows 原生版完全够用。如果目标是做一个高性能的线上服务,那从一开始就得上 Linux,Windows 版只是一个开发替身。
另外一个容易被忽略的差异化场景是:教学和演示。我在线下讲过几期 Redis 入门课,许多学员的电脑就是 Windows 10,你让他们去装个虚拟机或者 WSL 再开始学,很多人当场就放弃了。给一个双击就能跑的 redis-server.exe,他们的第一反应是“原来这东西这么简单”,学习动力一下就上来了。所以工具选择不能只谈纯粹的技术优劣,还得考虑使用者的背景。
还有一点值得提:Windows 移植版虽然版本不如 Linux 版新,但核心数据结构、持久化、订阅发布、分布式锁的底层逻辑跟 Linux 版完全一致。你在这个环境里学到的任何东西,换到 Linux 服务器上依然有效,不存在“学了个假 Redis”的问题。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 下载渠道深度拆解:官网、GitHub、网盘到底该信谁
下载是踩坑重灾区。我先说结论,再解释为什么。
2.1 真正的官方渠道和它背后的“坑”
Redis 官网 https://redis.io/download 打开后,Linux 的安装命令一目了然,但 Windows 那块很容易让新手迷路。官网推荐你用 WSL,理由是 Redis 本身是为 POSIX 环境设计的,Windows 原生移植不是官方支持的项目。这个立场是正确的——Redis 的持久化、IO 多路复用这些底层机制在 Windows 上都有兼容性问题,官方不想背这个锅。
但很多人不看说明,直接在页面上点来点去,最后下载了个莫名其妙的 zip 包,里面文件不完整,双击 redis-server.exe 报错说缺 dll,这种场面我见过太多次了。
2.2 GitHub 上最值得信任的移植项目
目前最常见的是 https://github.com/tporadowski/redis/releases 。这个项目是民间维护的,基于 Redis 5.0.14 和 6.0.20 源码编译,提供 Redis-x64-5.0.14.zip 和 Redis-x64-6.0.20.zip 这类包。下载下来之后解压,里面包含 redis-server.exe、redis-cli.exe、redis-check-aof.exe、redis-check-rdb.exe 以及默认的 redis.windows-service.conf 和 redis.windows.conf。
为什么推荐它而不是更早的微软官方移植版?因为微软的 archive 版长期停在 3.x 版本,Redis 后续新增了很多数据类型和命令,你在 Windows 上练个 SET、GET 没问题,但学到 STREAM、LPOS 这些新命令就直接抓瞎了。tporadowski 的版本至少把 Redis 6.0 带给了 Windows 用户,覆盖了绝大多数学习者需要的功能。
如果你需要更新的特性,也有更激进的选择:Memurai。这是一个商业化的 Redis 兼容实现,官方提供了 Windows 原生版,性能和兼容性都不错,但个人开发者用免费的 developer 版就够了。这个不在我们这篇文章的讨论范围内,提一句只是让你知道有这条路径。
2.3 为什么不建议从网盘或不明站点下载
搜索引擎里搜“redis windows 下载”或者“redis下载”,排前面的不一定都是好结果。有些站点把 Redis 打包成安装向导,装的时候夹带其他软件,或者让你登录关注公众号才能解压,这些都不是正经玩法。
开源软件就该从开源社区拿。宁可多花两分钟找到 GitHub Releases 页面,也不要图方便从第三方网盘下载不明来源的压缩包。封闭的 exe 安装包尤其要警惕,你根本不知道它在系统里注册了什么服务、修改了哪些注册表项。
2.4 镜像站和下不动时的备选
GitHub 在国内的下载速度时好时坏,如果 releases 页面一直转圈,有两个办法:
- 用 ghproxy 这类 GitHub 加速代理,把 release 链接复制进去直接下载。
- 找到可靠的技术社区维护的镜像包,但注意校验压缩包的哈希值。
我在公司内网给同事拷过这个 Zip 包,解压即用,不需要管理员权限,也不需要装依赖库,这一点比很多 Windows 软件都友好。下载环节唯一要花心思的就是“找到可信的包”,找到之后基本就一路顺畅了。
3. 解压到跑通的完整步骤:从双击到第一行 PONG
3.1 目录规划:别放在中文路径和系统盘
解压后的文件夹虽然可以直接放任何位置,但我强烈建议放在一个干净的英文路径下,比如 D:\software\redis 或者 C:\app\redis。原因有两个:第一,Redis 的配置文件里默认有 dir ./ 这种相对路径,工作目录的解析在中文路径下偶尔出幺蛾子;第二,以后用脚本启动、注册服务、配置环境变量时,路径越简单越不容易出错。
解压完成后,文件列表应该是这些:
- redis-server.exe:服务端主程序
- redis-cli.exe:命令行客户端
- redis-check-aof.exe:AOF 文件检查修复工具
- redis-check-rdb.exe:RDB 快照文件检查工具
- redis.windows.conf:常规配置文件
- redis.windows-service.conf:注册成 Windows 服务时使用的配置文件
这里注意一个细节:很多人直接双击 redis-server.exe,窗口一闪就没了,以为安装失败。实际原因是 Redis 默认前台运行,启动后终端窗口会一直挂着,只要显示一个 ASCII 艺术 Logo 和端口号 6379,就是成功了。窗口一闪而过的现象,通常是配置文件的语法错误或者端口被占用,启动日志还没来得及看清就退出了。
3.2 启动服务端:前台模式和后台模式的选择
最简单的启动方式:
bash复制redis-server.exe
默认监听 6379 端口,前台运行。这个模式适合第一次验证安装是否成功——你看着窗口里的日志,会看到类似这样的输出:
code复制[1234] 12 Mar 10:00:00.123 # Warning: no config file specified, using the default config.
[1234] 12 Mar 10:00:00.123 * Running mode=standalone, port=6379.
[1234] 12 Mar 10:00:00.123 # Server initialized
[1234] 12 Mar 10:00:00.123 * Ready to accept connections tcp
如果你指定了配置文件启动:
bash复制redis-server.exe redis.windows.conf
则会加载配置文件里的参数。这里必须指出一个新手极易踩的坑:redis.windows.conf 和 Linux 版的 redis.conf 有细微差异,两个文件不能直接互相替换。如果你把 Linux 版配置直接 Copy 到 Windows 版,很多指令会因为路径写法不同(/ vs \)或权限设置不同而报错。
3.3 验证安装:PING 一下,来了
另开一个命令提示符窗口,进入 Redis 目录,执行:
bash复制redis-cli.exe ping
输入之后返回 PONG,说明服务端和客户端都正常了。这个简单的验证动作,是所有后续操作的前提。如果返回的是 Could not connect to Redis at 127.0.0.1:6379: Connection refused,那就是服务端没起来,回到上一步去看日志。
更多玩法:redis-cli.exe 后面可以直接带命令,比如:
bash复制redis-cli.exe set mykey "hello"
redis-cli.exe get mykey
这些基本命令可以帮你快速确认数据能不能存进去。
3.4 注册为 Windows 服务:一劳永逸的做法
每次手动双击 redis-server.exe 太麻烦了,而且关掉窗口服务就停。想让它像正式软件一样开机自启,用命令注册成 Windows 服务是最省心的。
管理员身份打开命令提示符,进入 Redis 目录执行:
bash复制redis-server.exe --service-install redis.windows-service.conf --service-name Redis
注意,注册服务时用的是 --service-install,不是 --service-start。前者只安装,后者安装并立即启动。安装成功后,再执行:
bash复制redis-server.exe --service-start --service-name Redis
服务跑起来后,可以用 net start / net stop 控制启停,或者直接在 Windows 服务管理器里找到名为 Redis 的服务去操作。
这里有个实践建议:注册服务前,先把密码、持久化配置都写进 redis.windows-service.conf,因为服务一旦注册,以后启动时读的就是这个配置文件,改完配置后要重启服务才生效。
3.5 开机自启注意事项
服务注册成功后,服务管理界面的启动类型默认是“自动”,所以开机自启不需要额外设置。如果哪天发现开机后 Redis 没跑起来,多半是服务被安全软件拦截了。到时候去服务管理器里手动启动一下,看日志报什么错就好。
还有一种情况:换了 Redis 安装目录,但服务注册信息还指向旧路径。这时要先卸载服务再重装,否则会出现“服务显示在运行,但端口没监听”的诡异局面。卸载命令也很简单:
bash复制redis-server.exe --service-uninstall --service-name Redis
4. 核心配置项调整:密码、持久化和内存策略一个都不能少
Redis 默认配置非常“裸”——没有密码、不持久化、内存随便用。开发环境下图省事没问题,但稍微有点实际用途就需要改配置了。我把最关键的几个配置项拆开讲,每个都会告诉你为什么这么设置。
4.1 设置访问密码
配置文件里找到这一行:
conf复制# requirepass foobared
去掉注释,改成自己的密码,比如:
conf复制requirepass MyStrongPass123
保存后重启服务,再用 redis-cli 连接时需要先认证:
bash复制redis-cli.exe
auth MyStrongPass123
或者直接一步到位:
bash复制redis-cli.exe -a MyStrongPass123
这里提醒一句:命令行带 -a 参数的方式,密码会出现在终端历史记录里,自己电脑上无所谓,但如果是共用机器,建议进入交互模式后用 auth 命令输入,避免密码泄露。
为什么一定要设密码?Redis 默认不设限,只要端口暴露到局域网,任何人都能连上来读写数据。安全圈有个很经典的 Redis 入侵案例:攻击者通过未授权访问 Redis 的高权限写入,配合计划任务直接拿下了服务器。你在 Windows 上本地开发也许暴露风险低,但养成设密码的习惯,换到生产环境就不会犯这种低级错误了。
4.2 持久化之 RDB 快照
Redis 默认开启了 RDB 持久化,配置里有这样几行:
conf复制save 900 1
save 300 10
save 60 10000
意思是:900 秒内至少有 1 次写操作就触发快照;300 秒内至少有 10 次写操作触发快照;60 秒内至少有 10000 次写操作触发快照。RDB 适合做冷备份,文件体积小,恢复速度快,但有一个明确的短板——最后一次快照之后写进去的数据,在崩溃时会丢。
如果你在 Windows 上跑的是开发环境,RDB 默认配置其实已经够用。但如果你在用 Windows 版模拟生产行为,比如练 Redis 缓存治理、消息队列这些场景,建议把 RDB 的触发条件改得更频繁一点,或者干脆开启 AOF。
4.3 持久化之 AOF 日志
想尽可能不丢数据,就开启 AOF。配置里默认是关闭的:
conf复制appendonly no
改成:
conf复制appendonly yes
appendfsync everysec
appendfsync 有三个选项:always(每次写命令都同步到磁盘,最安全但慢)、everysec(每秒同步一次,性能和安全的折中)、no(交给操作系统决定刷新时机,性能最好最不安全)。开发环境选 everysec 就对了。
打开 AOF 之后,Redis 目录下会多出一个 appendonly.aof 文件。这个文件里记录的是一条条写命令,你可以直接打开看,格式非常直观。
有一点必须讲清楚:RDB 和 AOF 可以同时开启。Redis 重启时会优先用 AOF 来恢复数据,因为 AOF 文件里记录的命令更完整。如果 AOF 文件损坏,可以用 redis-check-aof.exe 修复,恢复的完整度看运气,所以生产环境还要做好外部备份。
4.4 内存策略和驱逐规则
Redis 默认不限制内存使用,这对一台专门的服务器来说没什么问题,但 Windows 开发机内存本来就不宽裕,Redis 要是一不留神吃满内存,整个机器都卡。配置里找到:
conf复制# maxmemory <bytes>
比如限制 512MB:
conf复制maxmemory 512mb
一旦超过这个上限,Redis 会根据 maxmemory-policy 配置决定怎么处理新写入。默认策略是 noeviction——不驱逐任何数据,直接报错返回。这个策略在开发时能帮你早点发现问题(比如缓存该清理了),但如果你模拟的是一个真正的缓存场景,建议改成:
conf复制maxmemory-policy allkeys-lru
意思是:内存满了,按 LRU 算法淘汰最近最少使用的 key。这是最常见的缓存策略,跟线上生产环境的配置一致。你也可以根据自己的场景用 volatile-lru,它只对设置了过期时间的 key 做淘汰。
我建议大家在本地就把这套配置调好,这样代码里出现内存问题时会提前暴露,而不是等到上了服务器才暴雷。
4.5 端口和绑定
默认端口 6379,绑定回环地址 127.0.0.1。如果你想在局域网里访问,需要把 bind 改成 0.0.0.0 或者直接注释掉 bind 行,但这样做的前提是你已经设置了密码,否则等于裸奔。
conf复制bind 0.0.0.0
port 6379
改完配置别忘了一个 Windows 特有的坑:防火墙会拦外部设备的连接请求。我在新装的 Windows 10 上遇到过无数次——Redis 明明正常监听,从另一台电脑就是连不上。去防火墙的高级设置里添加入站规则,放行 6379 端口,或者至少针对本地网络放行。
5. 可视化工具盘点:从 RDM 到 AnotherRedisDesktopManager
用命令行操作 Redis 是基本功,但日常开发里你还是想要一个 GUI 工具,尤其是管 key、看内存占用、查慢日志的时候,图形界面效率高太多。
5.1 Redis Desktop Manager(RDM)
RDM 是知名度最高的 Redis 可视化客户端,社区版免费开源。界面分左右两栏,左边是服务器连接列表,右边是 key 值查看和命令行输入区。最常用的操作是:
- 连接管理:可以保存多个连接,支持 Redis 密码认证。
- Key 浏览:支持按类型过滤、按正则模糊搜索 key,对定位问题帮助很大。
- 数据查看:字符串、哈希、列表、集合这些类型都能直接看到内容,还能编辑。
RDM 最大的问题是对新版本 Redis 的支持偶尔慢半拍,而且社区版更新频率一般。如果连接的时候报协议错误,建议换下面这个。
5.2 Another Redis Desktop Manager(ARDM)
这个工具是 RDM 的一个更活跃的开源分支/替代品,支持 Windows、macOS、Linux。我个人的使用感受是:启动快、界面简洁、key 搜索体验更顺手,对 Redis 模块、发布订阅、慢日志这些功能的覆盖也更全。
安装方式也很简单,直接去 GitHub Releases 下载 exe 安装包,或者如果你在用软件包管理器,可以用 choco install another-redis-desktop-manager 一键装。
5.3 RedisInsight
Redis 官方出品,功能比上面两个都强大,支持实时监控、内存分析、慢查询、命令调试这些进阶功能。界面比较现代,但对低配机器不太友好。个人觉得,初学者装 ARDM 就完全够用了,RedisInsight 等你开始分析线上问题的时候再装。
5.4 连接工具选型建议
| 工具名称 | 适合人群 | 核心优势 | 注意事项 |
|---|---|---|---|
| redis-cli | 所有人 | 最可靠,零依赖 | 需要记忆命令 |
| RDM | 初学者 | 社区资料多,易上手 | 更新慢,偶有兼容问题 |
| ARDM | 日常开发 | 功能全、主动维护 | 需要从 GitHub 下载 |
| RedisInsight | 进阶用户 | 官方出品,监控分析强 | 资源占用偏高 |
6. 常见的五个坑:端口占用、防火墙、配置语法和“服务就是起不来”
6.1 端口占用:你到底被谁占了
启动 Redis 时提示 Could not create server TCP listening socket *:6379: bind: Address already in use,这就是端口被占了。大部分情况是之前启动的 redis-server.exe 进程没关干净,或者是双击了多次服务导致多个实例抢占端口。
排查命令:
bash复制netstat -ano | findstr 6379
拿到最后一列的 PID,再用任务管理器找到对应进程,结束它。如果是服务方式启动的,去服务管理器里停掉应用即可。
6.2 Windows 防火墙:隐形的拦截者
Windows 10 的防火墙对入站连接默认是拦截的。如果你的 Redis 只给本机用,不受影响;但如果你要用局域网里的另一台电脑连接,必须放行。
操作路径:控制面板 -> Windows Defender 防火墙 -> 高级设置 -> 入站规则 -> 新建规则 -> 端口 -> 选 TCP -> 特定本地端口填 6379 -> 允许连接。完成后另一台电脑就可以通过 redis-cli -h 192.168.x.x -a 密码 连上来了。
6.3 配置文件写错不报错:最常见的隐形故障
Windows 移植版读取配置时,语法检错并不完全严格。有时你手误把 requirepass 写成了 requirepasss,Redis 不报错,但密码根本不生效。排查方法:
bash复制redis-cli.exe -h 127.0.0.1 -p 6379 config get requirepass
如果输出 (nil),说明这个配置项没生效。同理,想确认端口、内存策略这些配置是否真实加载,都用 config get 参数名 去查。
6.4 Redis 服务怎么都起不来:去查日志
服务方式启动失败时,事件查看器里不一定会给出详细原因。我常用的排查路径:
- 先前台启动
redis-server.exe redis.windows-service.conf,看终端输出。所有配置错误、路径错误都会在这里打出来。 - 确认工作目录在 Redis 文件目录下,因为配置里
dir ./相对路径的解析跟启动位置相关。 - 检查配置文件的编码。用记事本改过配置后保存为 UTF-8 with BOM,Redis 读起来偶尔会乱。最好用 VSCode 或 Notepad++ 另存为 UTF-8 without BOM。
6.5 内存突然满了:数据被清空还是被淘汰
如果你设置了 maxmemory 和 maxmemory-policy allkeys-lru,某天发现数据少了很多,不要慌,先看 info 输出里的 evicted_keys 字段。如果它不为 0,就是淘汰策略跑起来了。这是正常行为,但如果你不希望数据被淘汰,就得升级内存策略或换一种淘汰维度。
7. 进阶玩法:把 Windows 下的 Redis 用得更像生产环境
7.1 用命令行批量验证配置
连接上 Redis 后,执行 info all 能输出一大堆有用的运行指标。我平时关注这几个:
redis_version:版本号,确认有没有连错服务器。connected_clients:当前连接数。used_memory/used_memory_human:实际占用内存。total_commands_processed:累计处理命令数,判断负载用在什么地方。keyspace_hits/keyspace_misses:命中率,做缓存调优必看。
7.2 数据备份的土办法
Windows 移植版没有自动备份到云端的能力,但你可以用计划任务定时把 RDB 文件复制到别的磁盘或 NAS。
最简单的方式是写一个批处理脚本:
bat复制copy /Y D:\software\redis\dump.rdb D:\backup\dump-%date:~0,4%%date:~5,2%%date:~8,2%.rdb
然后用任务计划程序每小时或每天跑一次。注意备份时最好确认 Redis 没有正在写快照,否则复制的文件可能不完整。稳妥的做法是用 redis-cli bgSave 先生成一个新快照,再复制那个文件。
7.3 一个实用的 WSL 补充思路
如果你在 Windows 10 上装 Redis 是为了学习,建议同时把 WSL2 环境搭起来。等你需要跑 Redis 最顶级的特性、或者要测试集群和哨兵模式的时候,Windows 原生版会显得力不从心,WSL2 里一条 apt install redis-server 就能解决。两个环境并存,日常开发用 Windows 版,复杂实验进 WSL,互相不冲突。
7.4 手动安装服务之后,如何干净卸载
如果哪天你要卸载,按我的标准步骤走一遍,保证不留垃圾:
bash复制redis-server.exe --service-stop --service-name Redis
redis-server.exe --service-uninstall --service-name Redis
然后手动删除 Redis 文件目录,清理掉数据目录下的 dump.rdb 和 appendonly.aof。如果想彻底,检查一下环境变量里有没有 Redis 路径,有的话一并删掉。
8. 写在最后的一点经验
前前后后在 Windows 10 上装过几次 Redis,踩过的坑比想象中多。记忆最深的一次,是帮同事排查 Redis 服务“自动停止”的问题,折腾了半天才发现是他把配置文件放错了目录,服务启动时读的是另一个配置文件,里面端口写成了 6380,客户端连 6379 自然是什么都连不上。这种低级问题是真实世界里最多的一类。
所以,我的建议始终是:先用前台模式把 Redis 跑起来确认没问题,再谈注册服务;改配置后,用 config get 去验证实际加载值,而不是想当然。 Redis 的文档虽然多,但 90% 的问题都能用 redis-cli 的交互命令自己定位。
如果这篇内容能帮你省下一两个小时,那就值了。
