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

资讯详情

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

Windows安装Redis全攻略:三种方案实测对比与避坑指南

Windows安装Redis全攻略:三种方案实测对比与避坑指南 说实话每次有读者问我“Windows怎么装Redis”我都觉得这个问题很有代表性。Redis官方其实一直没发布Windows原生版本但大家在Windows上开发调试又确实离不开它。对比Linux下一条apt install redis-server就完事Windows上总要绕几步路新手很容易卡在下载、解压、权限、服务注册这些细节上。这篇博文我直接把实操过的三种方式全写出来从最快上手的绿色版、到适合长期使用的服务化安装、再到用WSL2和Docker跑Linux原生版本每一步都带上我的实测经验和看得见的界面说明争取让你照着走就能跑通。整个内容不挑基础不管你是刚接触Redis的测试同学还是需要在本地搭一套环境的Java、Python后端都可以按需选一种方式动手。中间我还把配置密码、设置开机自启、可视化客户端连接这些高频需求一起讲了顺手埋了几个我掉进去过的坑。1. 动手前的准备三种安装方案怎么选1.1 为什么Windows上没有“官方版”Redis很多刚接触Redis的人会下意识去redis.io官网找Windows安装包会发现官网下载区只有Linux、macOS的安装指引压根没有Windows的事。这里面的根本原因是Redis依赖了Linux/Unix系统特有的一些机制比如fork()系统调用它被用来做持久化时的后台快照Windows的进程模型和这套机制对不上官方团队一直也没打算专门维护一个Windows分支。所以Windows用户实际能用的方案基本都是“曲线救国”使用第三方移植版目前维护比较活跃的是tporadowski/redis相当于把Redis 5.0.14移植到Windows上编译成原生可执行文件性能接近Linux版适合本地开发测试。用WSL2跑Linux版Redis在Windows里装一个轻量Linux虚拟机直接跑官方原版Redis行为最接近生产环境。用Docker容器跑Docker Desktop底层还是WSL2或Hyper-V但好处是一句命令就能拉起容器环境隔离干净不污染宿主机。这三个方案我下面都会详细讲。如果你只是临时跑一下验证代码逻辑选方案一最快如果你日常开发本来就在用WSL2或者Docker那方案二、三反而更顺。没有绝对的好坏看你自己习惯哪种工作流。1.2 三种方案适用场景对比我先放一张对比表后面再逐个拆开讲。这样你心里有个底知道每种方式适合什么场景。方案上手难度启动速度和Linux生产环境一致性适合场景Windows原生移植版ZIP低解压即用快一般Redis版本相对旧快速本地调试、轻量使用MSI服务化安装低图形界面指引快开机自启一般希望长期作为Windows服务运行WSL2原版中需装WSL快高直接跑官方二进制开发环境与生产环境保持一致Docker容器中需装Docker Desktop中高镜像即官方版本多实例、复杂配置、需要环境隔离从表里能看到Windows原生移植版最大的优势就是“零依赖”连WSL都不用开。但要注意它的Redis版本停留在5.x像Redis 6.0引入的RESP3协议、客户端缓存、ACL权限控制这些新特性都用不上。如果你只是把Redis当缓存存个key5.x完全够用但如果你想体验新特性或者照着最新文档练习建议直接用WSL2或Docker方案。2. 方案一绿色版ZIP直接跑最快上手这种方式的思路特别简单GitHub上有人把Redis源码用MSVC编译成了Windows可直接运行的.exe文件下载后解压到本地目录就能跑不装任何依赖。整个过程不需要管理员权限也不需要改系统配置非常适合第一次体验Redis的读者。2.1 下载哪个版本怎么挑直接在GitHub搜索tporadowski/redis这个项目进入Releases页面你会看到类似redis-x64-5.0.14.zip和Redis-x64-5.0.14.msi这样的下载项。zip是绿色版解压即用不用安装。msi是安装包安装时会自动帮你注册Windows服务这点后面单独讲。我推荐第一次用zip理由有三个一是省去安装向导的点选过程二是随时可以整个文件夹删掉不留系统垃圾三是解压目录自己能控制不容易出现权限问题。不过有一点要注意下载时别直接点浏览器里那个“Latest release”旁边的大按钮看一下文件后缀确认是.zip而不是.tar.gz。还有一些第三方网站会把Linux版Redis打包成.tar.gz挂出来下错了在Windows上根本解不了压。下载完顺手看一下文件大小正常应该在5MB到10MB之间如果只有几百KB大概率是下到README或者别的什么东西了。2.2 解压和启动五分钟跑通找个干净目录比如D:\DevTools\Redis把zip包里的内容全部解压进去。解压完成后你会看到这些文件我用文字描述一下redis-server.exe服务端主程序Redis本体。redis-cli.exe命令行客户端用来发命令。redis.windows.conf默认配置文件Redis启动时会读取它。redis.windows-service.conf注册成Windows服务时使用的配置文件。redis-benchmark.exe性能压测工具平时很少用到。redis-check-aof.exe、redis-check-dump.exe修复持久化文件的工具。双击redis-server.exe如果看到终端窗口打印出Redis的图标风格ASCII logo还有类似Running modestandalone, port6379这样的日志就说明启动成功了。注意这个终端窗口不要关关掉就意味着Redis进程退出数据服务就停了。然后验证一下能不能用。再打开一个cmd窗口进入刚才的解压目录输入redis-cli ping如果回了一个PONG恭喜你的Redis已经能正常响应命令了。到这里最小可用的Redis环境已经建成了。你可以在redis-cli里敲set name zhangsan再敲get name能返回对应值说明整个链路是通的。2.3 把Redis注册成Windows服务双击exe这种方式有一个很烦的点桌面一重启Redis就没了每次开机都要手动双击一次。如果你打算长期使用建议把Redis注册成Windows服务让它在系统启动时自动在后台运行不弹任何窗口。用管理员身份打开cmd进入解压目录执行redis-server.exe --service-install redis.windows.conf --service-name RedisServer这里--service-install表示安装服务redis.windows.conf指定服务启动时加载的配置--service-name RedisServer是给服务起个名字方便后续管理你想叫别的也行。安装成功后执行redis-server.exe --service-start --service-name RedisServer这条命令把服务启动起来。想验证是否启动成功两种方式二选一一是再用redis-cli ping看是否返回PONG二是在任务管理器里切到“服务”标签找到名字为RedisServer的服务状态列应该是“正在运行”。以后再也不想用了先停止服务再删除服务redis-server.exe --service-stop --service-name RedisServer redis-server.exe --service-uninstall --service-name RedisServer这个过程中最容易翻车的地方是“忘记用管理员身份打开cmd”。如果不用管理员权限执行服务安装命令会直接报错提示权限不足或者失败。我在本地测试时也踩过几次所以建议你从一开始就右键“以管理员身份运行”。2.4 必改的配置项和自启动设置绿色版默认配置可以直接用但有两个地方建议马上改。第一设置密码。Redis默认是完全没有认证的而且默认监听所有网卡接口在本地测试没问题可一旦服务器暴露在局域网里别人就能连进来随意读写数据。修改解压目录下的redis.windows.conf找到requirepass这一行默认是被注释掉的去掉注释并设置密码requirepass 你的密码改完后重启服务或进程才生效。设置后redis-cli连接时就需要认证了redis-cli -a 你的密码或者先进入交互模式再认证redis-cli auth 你的密码第二确认自启动。如果你用的是“双击exe”的方式那开机不会自动启动。除了前面说的注册成服务之外还有一个笨办法把redis-server.exe的快捷方式丢进Windows的启动文件夹按Win R输入shell:startup回车就能打开。这个方式不推荐一是会有控制台窗口弹出来二是如果配置文件路径不对Redis启动了也是用默认空配置。注册成服务后默认的启动类型是“自动”也就是开机自动运行。你可以在服务管理器里按Win R输入services.msc回车找到RedisServer双击确认启动类型是“自动”。3. 方案二MSI安装包交给向导处理如果你不喜欢手敲命令觉得解压改配置太底层那就用.msi安装包。这个方式其实和zip包是同一个项目里的不同构建产物只是MSI会做几件额外的事把文件安装到C:\Program Files\Redis这样的系统目录、自动注册成Windows服务、默认配置好开机自启。3.1 安装过程中的几步选择双击Redis-x64-5.0.14.msi后一路跟着向导走。值得注意的是安装到“Destination Folder”这一步时默认路径是C:\Program Files\Redis你可以改成自己习惯的位置比如D:\Redis这完全不影响使用。继续往后有一个需要注意的界面里面会要求设置端口号默认6379、最大堆内存默认不限制还有一个“Add Redis installation folder to PATH environment variable”的选项我建议勾上。勾上之后你在任意cmd窗口里都能直接敲redis-cli不用先cd到安装目录后面操作会方便很多。还有一个选项是关于防火墙的询问是否允许Redis通过Windows Defender防火墙。如果只是本机开发不勾选问题也不大但如果你的Redis要提供给局域网内其他机器访问建议勾上避免后面排查防火墙问题。3.2 安装完成后验证服务是否正常安装过程走完后你可以按Win R输入services.msc回车打开服务管理器找到名称为Redis的服务。正常情况下它的状态是“正在运行”启动类型是“自动”也就是说电脑每次开机Redis都会自己跑起来。然后在cmd里执行redis-cli ping这里我特别提醒一句如果安装时勾选了“Add Redis installation folder to PATH environment variable”cmd直接能识别redis-cli如果没有勾选你需要先进到C:\Program Files\Redis目录再执行命令。到这里你会发现MSI方式其实和手动注册服务的效果一样区别只是把操作封装成了向导。对于不想折腾命令行的读者来说MSI确实是更友好的一种选择。3.3 修改配置文件和重启服务MSI方式安装后配置文件在安装目录下的redis.windows-service.conf。想设置密码用记事本或VS Code打开这个文件搜索requirepass同样去掉注释并改密码保存后重启服务。重启服务在服务管理器里右键Redis选择“重新启动”。或者在cmd里用管理员权限执行net stop Redis net start Redis这两条命令更直接适合习惯命令行的读者。设置完密码后用redis-cli -a 你的密码验证一下能正常操作就说明配置生效了。我个人的建议是如果你只是临时用zip方案足够如果明确知道要长期在Windows上开发MSI安装包更省心。毕竟服务自启、PATH配置这种杂活安装向导都帮你处理了。4. 方案三用WSL2或Docker跑Linux原版对于有经验的开发者来说Windows原生移植版有个绕不开的问题——Redis版本落后。Redis 6.0和7.0加入了不少新特性比如ACL权限控制、客户端缓存、RESP3协议想体验这些就只能用Linux原版。于是WSL2和Docker成了首选。4.1 WSL2方式几分钟跑起Linux原版RedisWSL2是在Windows里运行一个轻量级Linux虚拟机的官方方案和虚拟机相比资源占用小很多启动速度接近原生进程。用这种方式你拿到的就是Redis官方编译的Linux二进制行为和生产环境完全一致。先装WSL2。用管理员权限打开PowerShell或cmd执行wsl --install安装完成后重启电脑再打开Windows Terminal执行wsl --set-default-version 2确保用的是WSL2。首次启动WSL会自动进入默认的Ubuntu发行版需要你设置一个Linux用户名和密码。进入Ubuntu后执行sudo apt update sudo apt install redis-server -y安装过程中可能需要你输入之前设置的Linux密码这个是Ubuntu系统的用户密码不是Redis密码别搞混了。启动Redissudo service redis-server start验证一下redis-cli ping回显PONG就说明原版Redis已经在你的Windows里跑起来了。这个Redis的版本是Ubuntu软件源里的最新版本通常比Windows移植版新一两个大版本。WSL2里的Redis默认开机不会自动启动。如果你希望每次打开WSL就自动带上Redis可以在~/.bashrc文件末尾加一行sudo service redis-server start但这样每次启动WSL时都会弹一次sudo密码提示有点烦。也可以把当前用户加入sudo免密列表。4.2 WSL2方式的几个坑WSL2的坑我实实在在踩过几个给你避一下。第一端口冲突。如果Windows上已经用原生移植版Redis占用了6379端口WSL2里的Redis再启动就会报bind: Address already in use。这是因为WSL2的网络是共享宿主机的两者监听的是同一个端口。解决办法是错开端口比如WSL2里改成6380或者干脆停掉Windows版Redis。第二文件兼容问题。WSL2里跑的是Linux版Redis它读取的配置文件路径和Windows路径不一样。比如原来windows版用D:\Redis\redis.windows.conf换到WSL2就要用/etc/redis/redis.conf别把两个搞混。第三默认只监听本地。Ubuntu里的Redis默认配置是bind 127.0.0.1这意味着只在WSL内部可访问。如果你想从Windows侧的程序连接WSL2里的Redis比如Java后端跑在Windows侧一般直接连localhost:6379就能通因为WSL2默认的网络转发机制会处理。但如果连接不上先检查redis.conf里的bind和protected-mode设置。4.3 Docker方式一条命令拉起来如果你电脑上已经装了Docker Desktop那用Docker跑Redis是最省心的一条路好处是环境完全隔离不用担心端口冲突、文件污染这些问题而且以后删除容器Redis的数据和配置也可以一并清理干净。启动容器的命令docker run -d --name redis-container -p 6379:6379 -v D:/redis-data:/data redis:7.4 redis-server --appendonly yes这条命令我拆开讲一下-d后台运行容器。--name redis-container给容器起名方便后续管理。-p 6379:6379把宿主机的6379端口映射到容器内的6379端口。-v D:/redis-data:/data把Windows侧的D:/redis-data目录挂载到容器内的/dataRedis的持久化文件会写在这里这样删掉容器数据也不丢。redis:7.4使用官方Redis 7.4镜像。redis-server --appendonly yes启动时追加配置开启AOF持久化。验证是否启动成功docker ps能看到名为redis-container的容器状态为 “Up”再执行docker exec -it redis-container redis-cli ping返回PONG说明容器内部的Redis正常工作。如果你的Java或Python程序跑在Windows本机直接连localhost:6379就能访问到这个容器里的Redis。4.4 Docker方式如何设置密码和时区Docker命令里也可以直接带密码docker run -d --name redis-container -p 6379:6379 -v D:/redis-data:/data redis:7.4 redis-server --appendonly yes --requirepass 你的密码更规范的做法是写一个docker-compose.yml文件把端口、数据卷、密码、日志配置都声明好以后一键启动version: 3 services: redis: image: redis:7.4 container_name: redis-container ports: - 6379:6379 volumes: - D:/redis-data:/data command: redis-server --appendonly yes --requirepass 你的密码然后在docker-compose.yml所在目录执行docker compose up -d就能启动。这种方式的小优点是配置都在文件里团队协作时可以直接共享不用每个人手动敲一大串命令。不过Docker方式对电脑配置有一点要求——Docker Desktop本身要占内存如果你机器只有8GB甚至更少开着Docker再跑IDEA、浏览器之类的应用会比较吃力。这种情况下本地开发建议用WSL2或者原生版。5. 配置细节与常见坑5.1 配置文件中建议关注的几个参数不管哪种方式安装Redis的配置都有几个高频参数建议你重点关注。我以Windows绿色版为例打开redis.windows.conf里面常见的参数如下参数名默认值作用建议port6379监听端口默认即可被占用时改成6380bind127.0.0.1允许连接的IP范围默认只能本机连接要开放局域网需改成0.0.0.0并配合防火墙规则protected-modeyes保护模式禁止远程无密码访问生产环境必须开启测试环境也建议保持requirepass无被注释连接密码强烈建议设置maxmemory无限制内存使用上限超出触发淘汰策略根据机器内存设置比如2gbmaxmemory-policynoeviction不淘汰内存满时如何处理新写入推荐allkeys-lruLeast Recently Used 淘汰appendonlyno是否开启AOF持久化数据重要时建议yesappendfsynceverysecAOF刷盘策略保持默认everysec平衡性能与安全5.2 配置里最容易被忽略的maxmemory很多初学者装好Redis后不管内存使用直接开跑这是很危险的一件事。如果没有设置maxmemoryRedis就会无限制使用系统内存一旦数据量超出物理内存操作系统就会开始使用虚拟内存页面文件性能断崖式下降极端情况下甚至会导致整个系统卡死。设置maxmemory的方式是打开配置文件搜索maxmemory把注释去掉写上具体的限制maxmemory 2gb再配合淘汰策略maxmemory-policy allkeys-lru这个配置的意思很直白当内存达到2GB时Redis会优先淘汰最近最少使用的key腾出空间给新数据。如果你的使用场景是缓存这个配置最省心如果Redis里存的是不可丢失的数据就别用所有键淘汰策略改成noeviction让写操作报错至少能保证已有数据不丢。5.3 连接可视化客户端和常见报错装好Redis之后直接用命令行操作对新手不太友好推荐装一个可视化客户端来查看和管理数据。我用得比较多的是Another Redis Desktop Manager简称ARDM它是开源免费的跨平台界面比原版的Redis Desktop Manager更干净。连接参数很简单Hostlocalhost或127.0.0.1Port6379Password如果你设置了requirepass就填设置的密码没设置就留空Name给这个连接起个名字方便多个连接区分点“测试连接”显示成功就说明客户端已经连上Redis了。我顺手整理几个新手最容易踩的坑每条都是我实测过的现象原因解决办法redis-cli ping没反应Redis服务没启动或者端口不对确认redis-server.exe还在运行确认配置文件里的port启动redis-server.exe后窗口一闪而过配置文件语法错误在cmd里手动执行redis-server.exe redis.windows.conf看报错输出局域网内其他机器连不上bind只监听了127.0.0.1修改配置为bind 0.0.0.0同时检查Windows防火墙是否放行6379端口设置了密码还是能无密码连接改完配置没重启Redis修改配置后必须重启进程或服务连接时提示ERR Client sent AUTH, but no password is set客户端发送了认证命令但Redis没设置密码要么去掉客户端里的密码要么在配置里补上requirepass从Windows版Redis迁移到WSL2后key全不见了持久化文件路径不同WSL2读的是Linux路径把Windows版的.rdb或AOF文件复制到WSL2对应的数据目录5.4 排查技能看日志是第一步Redis在启动时、运行中都会把日志打到标准输出绿色版运行时会直接显示在终端窗口里。如果用服务方式运行日志默认写在安装目录下的redis_服务名.log。遇到问题先看日志大多数情况下Redis会把原因写得很清楚比如端口被占用、配置文件权限不足、内存参数非法等比你盲猜强很多。举个我遇到过的真实案例有次Redis启动后一直报Cant open the log file: Permission denied排查半天发现是日志文件被其他程序锁定了删除日志文件重新启动就好了。这种问题如果不去看日志只盯着redis-cli ping不放永远找不到根因。6. 收尾前再唠叨两句上面这些内容基本覆盖了我这些年给团队同事解决Redis安装问题的经验。我个人最常用的组合是临时本地测试用绿色版ZIP长期Windows服务用MSI安装包要贴近生产环境就上Docker或WSL2。没有哪一种方案是“唯一正确”的关键是看你的场景对版本、性能、便捷度哪种需求更优先。这里再分享一个我亲测有效的细节无论你用哪种方案装完后应该第一时间打开redis-cli把几个基础命令过一遍比如ping、set、get、keys *。这不仅是验证安装也是顺手看看命令行的交互是否符合预期避免等到程序接入的时候才发现环境问题那种排查成本高好几倍。另外Redis 5.0以后有个很实用的命令叫memory usage key能查看某个key占多少内存调试缓存大key的时候特别有用。不管在哪个平台装Redis都值得记一下这个命令。最后再提醒一点不管在Windows上跑哪个版本的Redis都不要在生产环境使用第三方移植版。它用来本地开发完全没问题但如果要上生产环境优先考虑Linux服务器或者至少用Docker/WSL2方案跑官方原版稳定性更有保障。Windows装Redis这件事本身不难难的是选对方案并且在踩坑的时候知道往哪个方向查。希望这篇图文能帮你少走弯路。
返回列表