☰
Windows上运行Redis 7的四种方案与配置指南
2026/10/1 15:20:40 网站建设 项目流程

1. 为什么Redis 7在Windows上这么折腾

1.1 Redis官方为什么不发布Windows版

很多人第一次接触Redis,都是从Windows机器开始的,毕竟日常办公、学习用的基本都是Windows。等到你想装Redis,去官网一看,下载页只列了Linux和macOS的源码,Windows那一栏是空白,心里瞬间就凉了半截。

这不是Redis官方疏忽,而是设计层面的取舍。Redis最核心的数据结构和网络模型大量依赖Unix环境下的系统调用,尤其是fork()和内存映射这类机制。Windows的内核模型和进程模型跟Unix差别很大,强行移植不但工作量大,跑起来还可能因为某些行为不一致产生诡异问题。所以Redis作者在很长一段时间里的态度很明确:Redis是面向Unix-like系统设计的,官方不做Windows版本。

后来微软自己维护过一个Windows分支,社区里也有人持续跟进,但这些项目基本都停在了旧版本上,Redis 7发布后没有任何官方的Windows二进制包。换句话说,你在Windows上搜“Redis 7安装包.exe”,找到的基本都是第三方打包或者旧版本,不能用“官网没有Windows版”这个结论去卡流程,而是应该换一种思路把Redis 7跑起来。

1.2 四条路线的横向对比

既然官方不出Windows版,那Windows上跑Redis 7的路子,总结下来其实是四条,各有各的取舍。

方案底层实现版本支持上手难度适合场景
WSL2原生安装真正的Linux内核虚拟机Redis官方版本,7.x完整中等本地开发、学习、复刻线上环境
MemuraiWindows原生兼容层对标Redis 7.x API低不想折腾虚拟化,只想要个本地服务
Docker Desktop容器运行Linux镜像官方redis:7镜像低多版本切换、快速起停、自动化脚本
第三方移植版Windows原生编译多数停在5.x低基本不推荐,新特性缺失

先给结论:我个人最推荐的是WSL2,因为它跑的是真正的Linux内核,Redis官方版本放在里面就是原生运行环境,跟线上Linux服务器的行为最接近。如果你实在不想开虚拟化,那WSL2和Docker二选一。Docker虽然底层也依赖WSL2,但屏蔽了绝大多数配置细节,很适合“只想尽快起一个Redis来用”的场景。

后面几章我会把这四条的完整操作步骤都写出来,每条都会带上配置细节和踩坑记录,你可以按需取用。

2. 路线一:WSL2装原版Redis 7(最推荐)

2.1 先装好WSL2环境

WSL2是Windows自带的“轻量级Linux虚拟机”,它不弹窗口、不占桌面资源,跟Windows文件系统还能互通。正因为Redis官方只认Linux,把Redis跑在WSL2里,等于给它一个“原生”的家。

安装之前先确认你的Windows版本,Windows 10 2004以上或者Windows 11都可以,老版本系统建议先看控制面板里有没有“适用于Linux的Windows子系统”可选。

用管理员身份打开PowerShell或终端,执行:

wsl --install -d Ubuntu-24.04

如果之前装过WSL但默认是WSL1,需要手动指定版本:

wsl --set-default-version 2

装好之后执行wsl -l -v,确认发行版名称和VERSION列是2。第一次进入Ubuntu时会要求你设置一个Linux用户名和密码,这个密码以后在Linux里安装软件时会用到,不要跟Windows密码混为一谈。

提示:如果wsl --install执行过程中报“无法解析服务器名称”之类的错误,多半是系统更新没打全。先把Windows Update的补丁装完再重试。

2.2 在WSL2里安装Redis 7

进入WSL终端后,第一件事是更新软件源缓存:

sudo apt update && sudo apt upgrade -y

然后安装Redis服务端:

sudo apt install -y redis-server

这里有个容易翻车的点:不同的Ubuntu发行版默认软件源里的Redis版本不一样。Ubuntu 22.04默认给的是Redis 6.x,只有Ubuntu 24.04这类较新的发行版,直接装才是7.x。如果你装完发现redis-server --version输出的还是6.x,别慌,用Redis官方提供的DEB仓库升级到7:

curl -fsSL https://packages.redis.io/gpg | sudo gpg --dearmor --yes -o /usr/share/keyrings/redis-archive-keyring.gpg echo "deb [signed-by=/usr/share/keyrings/redis-archive-keyring.gpg] https://packages.redis.io/deb $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/redis.list sudo apt update sudo apt install redis-server

装完再验证一次版本,只要输出是7.x开头,这步就算过了。

2.3 配置Redis开机自启

WSL2默认会启用systemd,所以Redis可以用系统服务方式托管,不需要手写后台启动脚本:

sudo systemctl enable redis-server sudo systemctl start redis-server

启动后检查一下状态:

systemctl status redis-server redis-cli ping

如果ping返回PONG,说明服务正常。默认配置下Redis监听在127.0.0.1:6379,只有本机WSL环境能访问,这个默认行为是安全的,先别急着改。

如果你在用的WSL环境里没有systemd,可以在/etc/wsl.conf里手动启用:

[boot] systemd=true

然后回到Windows执行wsl --shutdown,重新打开WSL终端,systemd就会生效。

2.4 让Windows程序连上WSL2里的Redis

Redis装好之后,最关心的通常是Windows这边的IDE或命令行工具怎么连上去。新版WSL2默认支持localhost回环转发,也就是说在Windows的PowerShell里直接执行:

redis-cli -h 127.0.0.1 -p 6379 ping

正常也会返回PONG。这个特性在绝大多数Windows 10 2004以上的版本里都可用。

万一直接不行,常见原因是IPv6回环或端口转发被干扰。这时候先取WSL的IP:

wsl hostname -I

然后在Windows侧用netsh做一个静态端口转发:

netsh interface portproxy add v4tov4 listenport=6379 listenaddress=0.0.0.0 connectport=6379 connectaddress=172.x.x.x

注意:这种方式适合本机开发和临时调试。不要把listenaddress改成0.0.0.0后就不管了,意味着局域网内任何机器都能扫到你的6379端口,后面我会专门讲安全那点事。

3. 路线二:Memurai原生Windows兼容版

3.1 为什么选Memurai

如果你手头的电脑因为公司策略、CPU型号或者系统版本限制,没法启用WSL2和Docker,那原生Windows服务就成了唯一的体面方案。Memurai就是干这个的:它把Redis的语义移植到了Windows上,以Windows服务方式运行,对客户端来说几乎就是Redis。

它有免费开发者版,日常学习和本地开发完全够用,生产环境需要买授权。我实测过常用命令、数据结构、过期策略、持久化这些核心功能,表现都很稳定。

到官网下载安装包,下一步下一步装好即可。安装完成后在服务列表里能看到Memurai服务,默认会自动启动。如果没启动,用管理员PowerShell执行:

net start memurai

验证是否正常:

redis-cli -p 6379 ping

能返回PONG就是通了。Memurai本身支持Redis协议,所以直接用Redis官方客户端工具连接完全没问题。

3.2 修改Memurai核心配置

Memurai的配置文件思路和Redis的redis.conf很像,默认会生成在安装目录或者C:\ProgramData\Memurai\下,文件名一般是memurai.conf。

几个高频改动项:

  • 端口:port 6379,如果和本机其他服务冲突,比如别的软件占了6379,改成6399即可。
  • 密码:requirepass YourStrongPassword,本地开发也不能裸奔。
  • 持久化:appendonly yes,开启AOF,避免Windows重启后数据全丢。

改完配置文件记得重启服务:

net stop memurai net start memurai

3.3 Memurai和Redis 7的差异认知

Memurai的对标目标是Redis API,版本号则走自己的节奏。所以不要拿Memurai的版本号去对比Redis的大版本,比如Memurai 4.x到底等价于Redis 7.0还是7.2,以官网的兼容性说明为准。

日常开发中,像String、Hash、List、Set、ZSet、Pub/Sub、Stream这些常用模块,差异几乎可以忽略。但如果你要用Redis 7新出的、跟底层内核绑定比较紧的特性,还是建议回到WSL2或Docker方案里验证。生产环境如果打算上Memurai,授权和性能压测要提前做,别等到上线前再发现兼容性问题。

4. 路线三:Docker Desktop跑redis:7容器

4.1 为什么容器方案这么省事

Docker Desktop在Windows上默认使用WSL2作为后端,装一次Docker Desktop,系统里会自动准备一个小型Linux环境,容器就跑在里面。它比手动管理WSL2更省心的地方在于:镜像自带Redis编译产物和配置,一条命令就启动,想换版本就换tag,想清理就删容器,整个生命周期都在Docker的规则之内。

安装Docker Desktop的过程不复杂,官网下载exe,安装时勾选“Use WSL 2 based engine”,装完后会要求重启或重新登录。启动Docker Desktop后,在终端里执行docker version确认Client和Server都在即可。

4.2 一条命令启动官方Redis 7

拉取并运行官方镜像:

docker run -d \ --name redis7 \ -p 6379:6379 \ -v redis7-data:/data \ --restart unless-stopped \ redis:7-alpine

拆开看每个参数的意思:

  • -d:后台运行。
  • --name redis7:给容器命名,后面所有管理命令都靠这个名字。
  • -p 6379:6379:把容器内的6379端口映射到Windows主机的6379,这样Windows本机程序可以直接用127.0.0.1:6379连接。
  • -v redis7-data:/data:声明一个数据卷,Redis持久化文件写入容器内的/data目录,实际上落到Windows侧的数据卷里,容器删了数据也不丢。
  • --restart unless-stopped:Docker Desktop启动时自动拉起容器。

启动后验证:

docker exec -it redis7 redis-cli ping

输出PONG就一切正常。Windows侧用redis-cli -p 6379 ping验证端口映射也通了。

4.3 设置密码与挂载自定义配置

官方镜像默认不带密码,如果你想给Redis加个权限,不用改配置文件,直接启动时加参数:

docker run -d \ --name redis7 \ -p 6379:6379 \ -v redis7-data:/data \ -v /你的路径/redis.conf:/usr/local/etc/redis/redis.conf \ --restart unless-stopped \ redis:7-alpine redis-server /usr/local/etc/redis/redis.conf

第二个-v把本地的redis.conf挂进容器,redis-server启动时指定读取这个文件。这样改密码、调持久化策略、绑定IP都在文件里,改动不用重做镜像。

提示:Docker容器的/data目录默认是RDB和AOF的落盘位置,配合appendonly yes使用,即使容器被删,只要数据卷还在,重新跑一条相同命令就能恢复。

5. 千万别踩的坑:第三方移植版的真相与安全底线

5.1 那些标着“Redis Windows”的项目到底是什么版本

搜索“redis7 for windows”时,很可能会遇到GitHub上一些Windows版本Redis项目,其中最有名的还是微软早期维护的Redis分支,以及社区维护的tporadowski/redis。这些项目确实让很多人在老版本Windows上把Redis跑起来了,但它们维护的版本基本停留在Redis 5.0左右,和Redis 7没有关系。

如果你只是用一下缓存、队列,5.x也还凑合;但Redis 7带来的ACL权限模型、Function脚本、Sharded Pub/Sub、更细粒度的内存管理这些能力,5.x一个都没有。更麻烦的是,网上有些包装后的“redis7安装包”很可能只是把旧版二进制换了个名字,装完等你真去用新特性时才发现根本对不上。

所以给你一个分辨方法:任何声称Redis for Windows的安装包,装完第一件事就是执行redis-server --version,看清真实版本号。如果版本号不是7开头,无论标题怎么吹都不要在需要Redis 7的场合用它。

5.2 安全底线:bind、密码、保护模式,一次说清楚

不管用上面哪条路线跑Redis,默认配置几乎都是“仅本机访问、无密码”。这在Windows本地开发没问题,可一旦你把Redis暴露给局域网或云服务器公网IP,几分钟内就会被扫描工具盯上。

Redis 7的默认配置里有三层保护:

  • bind 127.0.0.1 ::1:只允许本机回环地址连接。
  • protected-mode yes:没有显式配置bind和密码时,拒绝外部连接。
  • requirepass默认不设:无密码时配合protected-mode做防护。

如果你确实需要让局域网内其他机器访问,最少要把requirepass设上:

redis-cli config set requirepass 你的强密码

同时把bind从默认的127.0.0.1改成服务器对应网卡地址。但请记住,本机开发和临时测试,保持默认绑定就够了,不要为了远程连接方便就把bind改成0.0.0.0,然后把protected-mode关掉,这个操作等于把数据库敞开了扔在公网上。

6. 常见问题排查速查表与避坑心得

6.1 按症状定位问题

下面是这几条路线里,我实际碰到、以及群里高频出现的问题,整理成一张表快速对照。

症状可能原因排查命令解决方向
Windows和WSL都ping不通服务没启动systemctl status redis-server启动Redis服务并enable
Windows能ping通但局域网机器不行服务只绑定了127.0.0.1netstat -ano | findstr 6379按需改bind+requirepass
apt装完Redis版本是6.xUbuntu默认源版本旧redis-server --version换Redis官方DEB仓库再装
systemctl在WSL里不可用系统尚未启用systemdps -p 1看进程名配置/etc/wsl.conf并重启WSL
Docker容器启动后连接拒绝端口被占用或未映射docker ps -a检查状态停冲突服务,检查-p映射
Windows上redis-cli提示无法连接6379端口被其他软件占用netstat -ano | findstr 6379找到PID并结束,或换Redis端口
重启电脑后Redis没起来WSL/容器服务未设置自启systemctl status/docker psenable服务或加--restart参数

排查有个基本顺序:先确认服务进程在不在,再确认端口在监听,最后才怀疑防火墙和网络配置。顺序反了会浪费大量时间。

6.2 我的几条避坑心得

跑了几轮之后,我个人的习惯已经稳定成一套固定流程,分享给你参考。

第一,在Windows上做本地开发,能上WSL2就用WSL2。它不只是装Redis,后面的MySQL、Elasticsearch、Nginx、Node环境都是同一个思维,一次适应,长期受益。第二,如果只是为了“临时起个Redis验证一下命令”,Docker是最快的路径,官方镜像一拉一跑,用完就删,不会有任何残留。第三,Memurai适合公司电脑受限、不能开虚拟化的情况,但它毕竟不是完整的Redis Linux环境,遇到底层特性差异时还是要回到WSL2/Docker去核实。第四,所有方案的配置文件最好都备份到Windows侧,因为WSL发行版或者容器随时可能被重置,配置文件在Linux内部丢了就真的没了,备份到D盘或用户目录才稳妥。

另外,装完Redis先改密码再开放端口,这个顺序一定不要反。我见过太多人为了方便调试,把Redis直接暴露在局域网里,结果扫描工具一进门,数据被刷、内存被清空,最后只能手动恢复备份。Redis这种纯内存数据库,如果没有持久化策略,重启一波数据就蒸发,比丢文件还难受,所以appendonly yes和save策略也要一开始就写好。

还有一个小技巧:Windows侧想快速管理Redis,可以装一个RedisInsight图形客户端。WSL2、Memurai、Docker容器三种环境它都能连,键值浏览、内存分析、慢查询日志都在一个界面里,比一条条敲命令直观得多。这个工具不挑方案,属于“无论你选哪条路都用得上”的配套件。

如果让我给一个最终排序,我自己的实际选择是:本地随便用用选Docker,认真做开发模拟线上环境选WSL2,公司电脑受限再考虑Memurai,第三方移植版就别碰了。把版本确认、密码保护、持久化这三件事做好,Redis 7在Windows上其实一点都不难伺候。

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

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

立即咨询