多彩编程 多彩编程MZPH · CODE BLOG
ARTICLE DETAIL

文章详情

深耕前端与后端开发技术的一线实战笔记与踩坑复盘。

Windows系统Redis安装配置全攻略:MSI、WSL2与Docker方案详解

Windows系统Redis安装配置全攻略:MSI、WSL2与Docker方案详解 1. 为什么在Windows上折腾Redis如果你是一名后端开发者或者正在学习Web开发那么“Redis”这个名字对你来说一定不陌生。它被广泛用作缓存、消息队列和会话存储几乎是现代应用架构的标配。但一提到安装配置很多教程和官方文档都默认你有一台Linux服务器这让很多习惯在Windows本地做开发的伙伴感到头疼——难道为了用个Redis还得去装个虚拟机或者搞个WSL其实完全不必。Redis官方虽然没有提供Windows的原生稳定版但微软官方维护了一个基于Redis 3.2分支的Windows移植版本并且社区也有非常成熟的方案比如通过WSL2运行原版Redis或者使用Docker。对于绝大多数本地开发、学习测试的场景在Windows上跑起一个Redis服务是完全可行且高效的。这篇内容我就以一个常年混迹于Windows环境的开发者视角带你走通几条主流的安装配置路径。我不会只给你一串冷冰冰的命令而是会告诉你每条路背后的考量、可能会遇到的坑以及如何根据你的实际需求选择最合适的那一条。毕竟我们的目标不是“装上”而是“装好、能用、且理解为什么这么用”。2. 路径选择MSI安装包、WSL2还是Docker在动手之前我们先理清思路。在Windows上运行Redis主要有三种主流方式它们各有优劣适应不同的场景。1. 微软官方MSI安装包最快捷这是最“Windows”的方式。微软开源技术团队维护了一个项目将Redis 3.2版本移植到了Windows并提供了图形化的安装程序.msi文件。优点安装过程如同安装普通软件一样简单下一步下一步即可。它会自动将Redis安装为Windows服务开机自启无需手动启动。对新手极其友好几乎零配置。缺点版本较老基于Redis 3.2无法享受到Redis 5.0、6.0乃至7.0带来的诸多新特性如Streams数据类型、ACL访问控制、SSL支持等。对于需要用到新特性的项目或者希望与生产环境通常使用较新版本保持一致的开发者这可能是个问题。适合人群初学者、快速原型验证、或者项目明确只依赖Redis 3.2兼容特性的开发者。2. 通过WSL2运行原生Redis最“原生”WSL2Windows Subsystem for Linux 2允许你在Windows上运行一个完整的Linux内核。在这里面安装Redis和你在一台Ubuntu服务器上操作几乎一模一样。优点可以安装和使用最新版本的Redis与Linux生产环境完全一致学习的是标准的Linux服务管理命令systemctl。性能也相当不错。缺点需要先启用并配置WSL2安装一个Linux发行版如Ubuntu有一定的学习成本。Redis服务运行在WSL2的“虚拟机”里虽然可以通过网络访问但需要处理WSL2与Windows主机之间的网络互通问题。适合人群希望学习或模拟真实Linux服务器环境的开发者需要用到Redis新特性的开发者以及已经使用WSL2作为开发环境的伙伴。3. 通过Docker运行最灵活Docker提供了容器化技术你可以拉取任何版本的Redis官方镜像并在容器中运行。优点版本选择极其灵活官方镜像提供从3.2到最新版的所有标签环境隔离干净不会污染宿主机。启动、停止、删除都非常方便是当前跨平台开发部署的流行做法。缺点需要先安装Docker Desktop for Windows并确保其使用WSL2后端推荐或Hyper-V后端。对于不熟悉容器概念的开发者需要理解镜像、容器、端口映射、数据卷等基本概念。适合人群熟悉或希望学习Docker的开发者项目环境要求容器化需要快速切换不同Redis版本的场景。为了让你更直观地选择我整理了一个对比表格特性/方式微软MSI安装包WSL2 (原生安装)Docker安装复杂度极低图形化中需配置WSL2和Linux中需安装Docker DesktopRedis版本较旧基于3.2任意最新版任意版本通过镜像标签选择环境一致性差Windows特有优与Linux服务器一致优容器化跨平台一致管理方式Windows服务管理器Linux systemctl命令Docker命令docker run/stop数据持久化Windows文件系统WSL2内部文件系统Docker数据卷推荐适合场景快速入门、简单测试学习Linux运维、需新特性现代开发流程、多版本需求、环境隔离我的个人建议如果你是纯粹的新手只想尽快体验Redis的基本功能选择MSI安装包它能让你在5分钟内跑起来。如果你是一名严肃的开发者希望你的本地环境尽可能贴近生产服务器或者你的技术栈已经容器化那么优先考虑Docker。如果你想深入学习Linux和服务管理WSL2是一个绝佳的练习场。接下来我将为你详细演示前两种最常用方式MSI和WSL2的完整安装、配置和验证过程。Docker方式由于其命令行的简洁性我会在WSL2章节后附带说明。3. 方案一使用微软官方MSI安装包适合新手这条路是最快的。我们直接去GitHub上获取安装包。3.1 下载与安装访问发布页面打开浏览器前往微软开源项目microsoftarchive/redis在GitHub的 Releases 页面你可以直接搜索这个关键词。注意这不是Redis官方项目而是微软的移植版。选择版本在 Releases 列表中找到最新的稳定版。通常文件名类似Redis-x64-3.2.100.msi。点击它开始下载。运行安装程序双击下载好的.msi文件。安装过程是全图形化的。在“选择安装位置”步骤你可以使用默认路径C:\Program Files\Redis也可以换到其他位置比如D:\Redis避免占用系统盘空间。关键步骤端口设置。安装程序会询问是否将Redis添加到系统环境变量PATH建议勾选“是”这样以后在任意命令行窗口都可以直接运行redis-cli。接着它会询问Redis服务的端口号默认是6379除非你有冲突否则保持默认即可。关键步骤内存限制。安装程序会提示你设置最大内存限制。对于本地开发测试这个限制可以设得大一些比如1024MB或者直接不设置限制设置为0但这意味着Redis在理论上可以使用所有可用内存需谨慎。我通常设置为512MB或1024MB这对开发环境足够了。完成安装点击“安装”并等待完成。安装程序会自动将Redis配置为Windows服务并启动它。安装完成后你可以打开“任务管理器”切换到“服务”选项卡应该能看到一个名为“Redis”的服务正在运行。3.2 基础测试与连接现在我们来验证Redis是否真的在正常工作。打开命令行按下Win R输入cmd或powershell打开命令提示符或PowerShell。使用Redis客户端连接因为安装时我们已将Redis添加到PATH现在可以直接在命令行输入redis-cli如果一切正常你会看到命令提示符变成了127.0.0.1:6379这表示你已经成功连接到了本机127.0.0.1端口6379上的Redis服务。执行基本命令测试127.0.0.1:6379 ping服务器应该回复PONG。127.0.0.1:6379 set mykey Hello, Redis on Windows! OK 127.0.0.1:6379 get mykey Hello, Redis on Windows!这证明数据读写功能正常。查看服务信息127.0.0.1:6379 info server在返回的信息中你可以看到redis_version:3.2.100之类的版本信息确认我们运行的是移植版。3.3 核心配置文件与基础管理通过MSI安装的Redis其配置文件通常位于安装目录下名为redis.windows.conf或redis.windows-service.conf服务专用配置。修改配置如果需要修改默认配置比如设置密码、调整持久化策略切勿直接编辑正在被服务使用的配置文件。正确做法是停止Redis服务可以在命令行管理员身份运行sc stop Redis或在“服务”管理窗口中停止。复制一份redis.windows-service.conf并重命名如my_redis.conf然后修改这个副本。常用配置项bind 127.0.0.1默认只允许本机连接。如果你想从局域网其他机器访问可以改为bind 0.0.0.0但务必同时设置密码否则极不安全requirepass yourpassword设置访问密码将yourpassword替换为强密码。maxmemory 512mb设置最大内存使用量。save 900 1RDB持久化规则表示900秒内至少有1个key变化则保存快照。指定新配置启动服务在命令行管理员身份进入Redis安装目录执行redis-server.exe my_redis.conf --service-install my_redis.conf --service-name RedisNew这会安装一个名为“RedisNew”的新服务。然后启动它sc start RedisNew。之后就可以通过redis-cli -a yourpassword来连接了。服务管理命令管理员命令行# 停止服务 net stop Redis # 启动服务 net start Redis # 卸载服务 (如果需要) sc delete Redis踩坑提醒MSI安装版最大的“坑”在于版本滞后。如果你学习的教程或项目代码中使用了Redis 5.0的语法比如XADD用于消息队列那么这个3.2版本将无法支持。此时你就需要考虑切换到WSL2或Docker方案了。4. 方案二通过WSL2安装原生最新版Redis推荐进阶这条路能让你在Windows上获得最接近Linux生产环境的Redis体验。前提是你的系统满足WSL2的要求Windows 10版本2004及以上或Windows 11。4.1 启用WSL2并安装Ubuntu启用WSL功能以管理员身份打开PowerShell运行wsl --install这个命令会默认安装Ubuntu发行版并启用所需的虚拟化平台和WSL2功能。如果系统提示需要重启请照做。设置WSL2为默认版本如果尚未设置wsl --set-default-version 2启动Ubuntu安装完成后在开始菜单找到“Ubuntu”并启动。首次启动需要等待安装完成并设置你的Linux用户名和密码。4.2 在Ubuntu中安装Redis现在你拥有了一个完整的Linux终端。我们使用Ubuntu的包管理器apt来安装Redis。更新软件包列表sudo apt update安装Redis服务器和客户端sudo apt install redis-server -y-y参数表示自动确认安装。安装完成后Redis服务已经自动启动。你可以检查其状态sudo systemctl status redis-server你应该看到绿色的“active (running)”字样。4.3 配置Redis并允许远程访问从Windows主机访问默认情况下WSL2内的Redis只监听127.0.0.1即WSL2虚拟机内部。为了让Windows主机能够访问我们需要修改配置。编辑Redis配置文件sudo vim /etc/redis/redis.conf如果你不熟悉vim可以使用sudo nano /etc/redis/redis.conf。找到bind配置项。默认是bind 127.0.0.1 ::1这表示只绑定到IPv4和IPv6的本机回环地址。我们需要将其改为绑定到所有网络接口0.0.0.0或者更安全地绑定到WSL2分配给Ubuntu的IP地址。但为了简单测试我们先改为bind 0.0.0.0重要安全警告在生产环境或公网中将bind设置为0.0.0.0且不设密码是极其危险的这里仅用于本地开发测试。最佳实践是保持bind 127.0.0.1然后通过WSL2的端口转发功能让Windows访问。但为了教程直观我们先按此操作后面会补充安全设置。可选但推荐设置访问密码。在配置文件中找到# requirepass foobared这一行去掉注释#并将foobared改为一个强密码requirepass YourStrongPassword123!保存并退出编辑器在vim中是按Esc后输入:wq回车在nano中是按CtrlX然后按Y确认保存。重启Redis服务使配置生效sudo systemctl restart redis-server sudo systemctl status redis-server # 再次确认状态4.4 从Windows主机连接测试现在Redis在WSL2中运行并监听所有网络接口。我们需要找到WSL2中Ubuntu的IP地址。在Ubuntu终端中运行ip addr show eth0 | grep inet你会看到类似inet 172.xx.xx.xx/20的输出记下这个IP地址例如172.21.33.65。回到Windows。打开一个新的PowerShell或命令提示符窗口不是WSL终端。我们需要一个Redis客户端。如果你没有一个简单的方法是使用MSI安装包里的redis-cli.exe或者使用其他图形化客户端如Another Redis Desktop Manager。这里我们用最通用的方法安装一个Windows版的redis-cli。方法A推荐使用包管理器winget或scoop# 如果已安装 winget winget install tporadowski.redis # 安装后redis-cli 通常会自动加入PATH方法B手动下载从Redis官方Windows移植版项目下载发布包解压出redis-cli.exe并将其所在目录添加到系统PATH环境变量。假设你已经有了redis-cli并配置好PATH在Windows PowerShell中运行redis-cli -h 172.21.33.65 -p 6379将172.21.33.65替换为你实际的WSL2 IP。如果设置了密码连接后需要认证172.21.33.65:6379 auth YourStrongPassword123! OK 172.21.33.65:6379 ping PONG恭喜你已经成功从Windows主机连接到了WSL2中运行的原生Redis。4.5 更优雅的连接方式配置WSL2端口转发每次启动WSL2它的IP地址可能会变。每次都去查IP很麻烦。更优雅的方式是配置Windows主机到WSL2的固定端口转发。在Windows上管理员PowerShell创建一个端口转发规则将Windows本地的6379端口转发到WSL2的IP的6379端口。但我们需要一个脚本因为WSL2的IP会变。创建一个PowerShell脚本forward_redis.ps1# 获取WSL2的IP地址 $wsl_ip (wsl hostname -I).Trim() # 删除旧的转发规则如果存在 netsh interface portproxy delete v4tov4 listenport6379 listenaddress127.0.0.1 # 创建新的转发规则 netsh interface portproxy add v4tov4 listenport6379 listenaddress127.0.0.1 connectport6379 connectaddress$wsl_ip # 显示当前规则 netsh interface portproxy show all每次启动WSL2后以管理员身份运行这个脚本。或者你可以将这个脚本加入WSL2的启动脚本或Windows的任务计划程序实现自动配置。配置完成后在Windows上就可以直接用redis-cli -h 127.0.0.1 -p 6379来连接了Windows会自动将请求转发到WSL2。4.6 数据持久化与文件访问在WSL2中Redis的默认数据持久化文件RDB文件dump.rdb和AOF文件appendonly.aof位于/var/lib/redis/。你可以在Ubuntu中访问它们。如果你想在Windows文件资源管理器中直接查看这些文件可以在地址栏输入\\wsl$\Ubuntu假设你的发行版叫Ubuntu然后导航到/var/lib/redis目录。这种互操作性使得备份和管理数据变得非常方便。5. 方案三的简述使用Docker运行Redis最灵活如果你已经安装了Docker Desktop for Windows并且将其后端设置为WSL2推荐性能更好那么运行Redis就变得异常简单。拉取Redis镜像以最新稳定版为例docker pull redis:7-alpinealpine标签的镜像更小巧。运行一个Redis容器docker run -d --name my-redis -p 6379:6379 redis:7-alpine-d后台运行。--name my-redis给容器起个名字。-p 6379:6379将主机的6379端口映射到容器的6379端口。redis:7-alpine使用的镜像名。从Windows主机连接测试redis-cli -h 127.0.0.1 -p 6379如果需要自定义配置可以先将本地的redis.conf文件挂载到容器内docker run -d --name my-redis \ -p 6379:6379 \ -v /path/to/your/redis.conf:/usr/local/etc/redis/redis.conf \ -v redis-data:/data \ redis:7-alpine redis-server /usr/local/etc/redis/redis.conf-v /path/to/your/redis.conf:...挂载自定义配置文件。-v redis-data:/data创建一个名为redis-data的持久化数据卷挂载到容器的/data目录确保数据不随容器销毁而丢失。Docker方式隔离性好版本切换方便只需改变镜像标签是很多现代开发团队的首选。6. 图形化管理工具推荐与连接配置无论你用哪种方式安装了Redis一个图形化管理工具都能极大提升效率。这里我强烈推荐Another Redis Desktop Manager它开源、免费、功能强大且跨平台。下载安装去GitHub搜索“Another Redis Desktop Manager”下载Windows安装包并安装。连接配置MSI安装版直接新建连接地址填127.0.0.1端口6379如果设置了密码就填上。WSL2版地址填你获取到的WSL2 IP如172.21.33.65端口6379密码如果设置了。Docker版地址填127.0.0.1端口6379。连接成功后你可以直观地查看所有Key、内存信息、服务器状态执行命令甚至进行数据导入导出比命令行高效得多。7. 开发中的常见问题与排错思路即便按照教程一步步来你也可能会遇到问题。这里分享几个我踩过的坑和排查方法。7.1 连接被拒绝 (Could not connect to Redis)现象redis-cli或客户端工具无法连接提示连接被拒绝。排查服务是否运行对于MSI版检查Windows服务“Redis”是否启动。对于WSL2版运行sudo systemctl status redis-server。防火墙是否阻止检查Windows防火墙或第三方安全软件是否屏蔽了6379端口。可以尝试临时关闭防火墙测试。绑定地址是否正确检查Redis配置文件中的bind设置。如果绑定了127.0.0.1则只能从本机对于WSL2是WSL2内部访问。从Windows主机访问WSL2内的Redis需要绑定0.0.0.0或WSL2的IP或者配置端口转发。保护模式旧版/默认配置下如果Redis没有设置密码且没有通过bind明确绑定到非回环地址它会启动“保护模式”拒绝外部连接。解决方案就是设置密码或正确绑定地址。7.2 忘记密码或配置错误导致服务无法启动现象修改配置文件后Redis服务启动失败。排查查看日志。这是最重要的排错手段。MSI版日志通常在安装目录的Logs文件夹下或Windows事件查看器中。WSL2版运行sudo journalctl -u redis-server -n 50查看最近50行日志。日志通常会明确指出哪一行配置有语法错误。常见错误包括密码字符串格式不对、内存大小单位错误、保存快照的格式错误等。如果是因为密码错误无法连接可以临时注释掉配置文件中的requirepass行重启服务连接后再用CONFIG SET requirepass newpassword命令在线设置密码最后再写回配置文件。7.3 WSL2 IP地址变化问题现象昨天还能连上的WSL2 Redis今天连不上了。解决这就是我推荐使用端口转发脚本或固定WSL2 IP的原因。你可以尝试在WSL2的/etc/wsl.conf文件中配置网络固定IP有一定复杂度或者就使用前面提到的PowerShell脚本在每次WSL2启动后自动设置转发。7.4 性能问题或内存占用高本地开发环境Redis性能通常不是瓶颈。如果感觉慢检查是否存储了大量无用数据。可以使用redis-cli连接后运行INFO memory查看内存使用详情。MSI版注意安装时设置的maxmemory限制如果达到上限且淘汰策略maxmemory-policy配置不当会导致写操作失败。定期使用redis-cli --bigkeys命令生产环境慎用可以扫描出占用空间最大的key便于优化。最后无论选择哪种安装方式都建议花点时间阅读一下Redis的配置文件里面包含了大量的性能、持久化、安全相关的参数说明。理解这些配置才能真正驾驭好这个强大的工具。本地环境搭好了下一步就是把它集成到你的Spring Boot、Django、Node.js项目中去实际感受它带来的性能提升了。
返回列表