ARTICLE DETAIL

资讯详情

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

Windows安装Redis7全攻略:社区兼容版配置、redis-cli操作与可视化工具接入

Windows安装Redis7全攻略:社区兼容版配置、redis-cli操作与可视化工具接入 1. 为什么要在Windows上折腾Redis7很多人第一次接触Redis都是在Linux服务器上apt install redis或者yum install redis一条命令就完事了。但现实工作中大量开发和测试环境是清一色的Windows桌面尤其是做.NET、Java Spring Boot本地调试、或者前端想搭个本地缓存服务的时候你不可能每次都开个虚拟机或者连远程服务器。这时候在Windows上直接跑一个Redis7就是最省事的选择。Redis官方其实一直没把Windows当作一等公民微软早年维护过一个3.x的Windows移植版后来也停止更新了。到了Redis7这个版本社区里主流的做法是用tporadowski维护的Windows兼容版本或者干脆用WSL2跑原生Linux版。这两种方案我都实际用过各有各的适用场景。这篇文章就把Windows安装Redis7这件事从头到尾讲透包括下载选型、安装配置、redis-cli基本操作、Redis-Insight可视化工具接入以及我踩过的那些坑。这篇文章适合谁看如果你是后端开发、测试工程师、运维新手需要在Windows本机快速搭一个Redis7环境做开发调试或者学习那这篇内容可以直接抄作业。如果你已经在用Docker或者WSL2也可以看看我在方案对比部分的经验帮你判断哪种方式更适合当前场景。提示本文所有操作基于Windows 10/11 64位系统Redis版本为7.x社区兼容版。Windows Server 2016/2019/2022同样适用操作路径基本一致。2. 安装方案选型与核心思路拆解2.1 Windows下跑Redis的三种主流方案对比在动手之前先把方案理清楚。Windows上跑Redis7目前主要有三条路方案原理优点缺点适用场景社区兼容版用MSVC编译的Windows原生exe解压即用无需额外依赖版本跟进慢部分命令不支持本地开发调试、学习WSL2在Windows里跑Linux内核装原生Redis版本最新功能完整需要开启虚拟化内存占用高需要完整功能的开发环境Docker Desktop容器化运行Redis官方镜像环境隔离版本随意切换Docker Desktop资源占用大多版本共存、团队统一环境我个人的建议是如果你只是本地开发调试用社区兼容版就够了5分钟搞定不折腾。如果你需要用到Redis7的新特性比如Function、Sharded Pub/Sub或者要做接近生产环境的测试那就上WSL2或者Docker。2.2 为什么选择社区兼容版作为入门首选社区兼容版的逻辑很简单有人把Redis源码用MSVC重新编译成了Windows可执行文件打包成zip。你下载下来解压改个配置文件双击exe就能跑。不需要装虚拟机不需要开Hyper-V不需要学Docker命令。这个方案的核心优势是零依赖。你拿到的是一个独立的redis-server.exe它不依赖任何外部运行库VC运行库除外一般系统都有。对于只是想快速验证一个缓存逻辑、跑个单元测试的场景这是最高效的路径。但要注意社区兼容版并不是官方出品它是基于Redis源码在Windows平台上的移植编译。大部分核心命令都支持但像DEBUG系列、部分MODULE相关命令可能缺失。日常开发用到的String、Hash、List、Set、ZSet这些数据结构操作完全没问题。2.3 版本选择为什么锁定Redis7而不是6或5Redis7相比6.x有几个关键变化一是引入了Function替代部分Lua脚本场景二是Sharded Pub/Sub解决了集群模式下的消息广播问题三是List底层数据结构做了优化listpack替代quicklist的部分场景。如果你在写新项目直接上7.x是合理的没必要从老版本开始。社区兼容版目前有7.0.x和7.2.x两个主要分支。我建议选7.2.x因为它修复了7.0早期的一些稳定性问题而且对Windows的兼容性更好。具体下载地址在下一节会说明。3. 下载与安装实操全流程3.1 获取Redis7 Windows兼容版安装包社区兼容版的发布渠道主要在GitHub上搜索关键词redis windows就能找到tporadowski的仓库。截至我写这篇文章时最新稳定版是7.2.4。下载的时候注意选Redis-x64-7.2.4.zip这个包不要选msi安装版——msi版本安装路径不好控制卸载也麻烦zip版解压就能用最干净。下载完成后把它解压到一个你习惯的目录。我一般放在D:\DevTools\Redis7下面路径里不要有中文和空格这是Windows下跑开发工具的铁律。很多人踩坑就是因为路径里有空格导致配置文件读取失败或者服务注册不上。解压后的目录结构大概是这样的Redis7/ ├── redis-server.exe # 服务端主程序 ├── redis-cli.exe # 命令行客户端 ├── redis-benchmark.exe # 性能测试工具 ├── redis-check-aof.exe # AOF文件检查修复 ├── redis-check-rdb.exe # RDB文件检查修复 ├── redis.windows.conf # 默认配置文件 └── redis.windows-service.conf # 服务模式配置文件3.2 配置文件关键参数修改解压完别急着双击exe先改配置文件。用记事本或者VS Code打开redis.windows.conf找到下面这几个关键参数绑定地址默认是bind 127.0.0.1如果你只在本机用保持不动。如果想让局域网内其他机器连过来改成bind 0.0.0.0但一定要配合防火墙规则别裸奔。端口默认port 6379一般不用改。如果6379被占用了改成6380或者其他空闲端口。密码找到# requirepass foobared这一行把注释去掉改成你自己的密码比如requirepass MyRedis2024。本地开发也建议设密码养成好习惯。持久化默认开启了RDB快照配置是save 900 1、save 300 10、save 60 10000。意思是900秒内至少1个key变化就存盘以此类推。本地开发如果不在意数据丢失可以注释掉所有save行关掉持久化性能会更好。最大内存找到# maxmemory bytes如果本机内存有限建议设一个上限比如maxmemory 512mb配合maxmemory-policy allkeys-lru防止Redis把内存吃满。改完配置文件后保存注意编码要用UTF-8无BOM否则Windows下可能读取出错。3.3 启动Redis服务并验证运行状态配置文件改好后打开CMD或者Windows Terminalcd到Redis目录执行redis-server.exe redis.windows.conf如果看到类似下面的输出说明启动成功了[12345] 01 Jan 00:00:00.000 * Ready to accept connections tcp这个窗口不要关关了服务就停了。如果你想让它后台运行可以用start /b redis-server.exe redis.windows.conf或者注册成Windows服务下一节讲。验证服务是否正常另开一个CMD窗口执行redis-cli.exe -h 127.0.0.1 -p 6379 -a MyRedis2024连上之后输入ping如果返回PONG说明一切正常。再试试set testkey hello然后get testkey能正确返回hello就说明读写都没问题。3.4 注册为Windows服务实现开机自启每次手动启动太麻烦注册成Windows服务是最省心的做法。在Redis目录下执行redis-server.exe --service-install redis.windows.conf --loglevel verbose执行成功后打开服务管理器services.msc能看到一个叫Redis的服务。右键启动然后把它设为自动启动。这里有个坑要注意--service-install注册服务时默认用的是redis.windows-service.conf这个配置文件不是你改的那个redis.windows.conf。所以你要么把改好的配置复制到redis.windows-service.conf要么在安装命令里显式指定配置文件路径。我一般直接改redis.windows-service.conf保持两个文件一致。卸载服务用redis-server.exe --service-uninstall4. redis-cli与Redis-Insight实战操作4.1 redis-cli常用命令速查与实操演示redis-cli.exe是Redis自带的命令行客户端别看它界面朴素功能一点不弱。连上之后常用的操作我整理了一个速查表操作类型命令示例说明连接redis-cli -h 127.0.0.1 -p 6379 -a 密码带密码连接字符串set name 张三/get name最基础的键值操作哈希hset user:1 name 李四 age 25存对象常用列表lpush tasks task1 task2消息队列场景集合sadd tags redis windows去重场景有序集合zadd rank 100 player1排行榜场景查看所有键keys *生产环境慎用会阻塞查看键类型type keyname排查问题时常用设置过期expire keyname 3600秒为单位查看剩余时间ttl keyname-1表示永不过期我实际用下来keys *这个命令在本地开发时很方便但数据量超过几万条就会明显卡顿。更好的做法是用scan 0 match user:* count 100来分批遍历虽然写起来麻烦点但不会阻塞服务。还有一个实用技巧redis-cli --bigkeys可以扫描出最大的键帮你定位内存热点。redis-cli --stat可以实时查看QPS和内存使用情况调试性能问题时很有用。4.2 Redis-Insight可视化工具接入配置命令行虽然高效但有时候你想直观地看看数据长什么样这时候就需要可视化工具。Redis-Insight是Redis官方出的图形化工具支持Windows、macOS和Linux。下载安装Redis-Insight后打开新建连接填写Host127.0.0.1Port6379Password你设置的密码Name随便起比如本地Redis7点连接如果配置没问题就能看到数据库列表和键的树形结构。Redis-Insight的好处是它支持Redis7的新特性比如Function的查看和调试这是很多老牌可视化工具比如Redis Desktop Manager做不到的。如果你习惯用NavicatNavicat 17也支持Redis连接操作逻辑和连MySQL差不多适合已经熟悉Navicat生态的人。但Navicat对Redis7的新命令支持不如Redis-Insight及时看个人取舍。4.3 用redis-benchmark做一次性能基线测试装好之后建议跑一次性能测试心里有个底。Redis自带的redis-benchmark.exe就能做redis-benchmark.exe -h 127.0.0.1 -p 6379 -a MyRedis2024 -n 10000 -c 50参数解释-n 10000表示总共发10000个请求-c 50表示50个并发连接。跑完之后会输出SET、GET、INCR等操作的每秒处理量。我在一台i7-10700、16G内存的Windows机器上实测本地Redis7的SET操作大概在8万-10万QPSGET在9万-11万QPS。这个数据受CPU和内存影响很大仅供参考。如果你测出来只有几千QPS那大概率是配置有问题检查一下是不是开了AOF持久化或者maxmemory设得太小。注意性能测试会占用大量CPU不要在跑着其他重负载任务的时候测数据不准。5. 常见问题与排查技巧实录5.1 启动报错与端口占用排查问题一双击redis-server.exe闪退这是最常见的问题。闪退的原因通常是配置文件路径不对或者配置项有语法错误。解决方法不要双击用CMD打开cd到目录后执行redis-server.exe redis.windows.conf这样能看到具体的报错信息。问题二端口6379被占用报错信息类似Could not create server TCP listening socket 127.0.0.1:6379: bind: No error。排查方法netstat -ano | findstr :6379找到占用端口的PID然后tasklist | findstr PID看是哪个进程。如果是之前的Redis没关干净去任务管理器结束掉。如果是其他程序占用了要么改Redis端口要么关掉那个程序。问题三注册服务后启动失败大概率是配置文件路径问题。Windows服务默认的工作目录是C:\Windows\System32不是Redis所在目录。所以配置文件里的相对路径比如dir ./、logfile ./redis.log都会解析到System32下面导致失败。解决方法在配置文件里把所有路径改成绝对路径比如logfile D:\DevTools\Redis7\redis.log。5.2 连接失败与认证错误处理问题一NOAUTH Authentication required这说明你设了密码但连接时没提供。用-a参数带上密码或者连上之后执行auth 你的密码。问题二Could not connect to Redis at 127.0.0.1:6379: Connection refused服务没启动或者防火墙拦了。先确认redis-server进程在不在再看Windows防火墙有没有放行6379端口。本地连接一般不受防火墙影响但如果bind改成了0.0.0.0就需要检查防火墙入站规则。问题三中文乱码redis-cli默认用ASCII编码显示中文会显示成乱码。解决方法在CMD里先执行chcp 65001切换到UTF-8编码然后再连redis-cli。或者在Redis-Insight里看图形界面不存在这个问题。5.3 持久化与内存问题避坑指南RDB持久化失败报错Cant save in background: fork: Invalid argument。这是因为Windows没有fork系统调用社区兼容版用的是模拟实现。如果数据量太大模拟fork可能失败。解决方法减小RDB的触发频率或者改用AOF持久化。内存持续增长不释放检查是不是没有设maxmemory或者设了但淘汰策略不对。maxmemory-policy建议用allkeys-lru这样内存满了会自动淘汰最久未使用的键。如果用的是noeviction内存满了之后写操作会直接报错。AOF文件过大AOF会记录所有写操作时间长了文件会很大。可以执行bgrewriteaof手动触发重写或者在配置文件里设置auto-aof-rewrite-percentage 100和auto-aof-rewrite-min-size 64mb让Redis自动重写。5.4 常见问题速查表现象可能原因解决方法双击exe闪退配置文件错误或路径不对用CMD启动看报错端口被占用其他程序占用6379netstat排查改端口或关程序服务启动失败配置文件相对路径问题改成绝对路径连接被拒绝服务未启动或防火墙检查进程和防火墙规则NOAUTH错误未提供密码用-a参数或auth命令中文乱码编码问题chcp 65001或换图形工具RDB保存失败数据量大fork模拟失败减小频率或改用AOF内存不释放未设maxmemory设置上限和LRU策略6. 我的实操心得与进阶建议6.1 本地开发环境的几个实用配置我在Windows上跑Redis7做本地开发时习惯做这几个配置调整第一关掉RDB和AOF持久化。本地开发数据丢了无所谓重启后重新灌数据就行。关掉持久化后写入性能明显提升而且不会出现RDB保存失败的问题。第二设一个合理的maxmemory。我一般设512mb配合allkeys-lru。这样即使代码里有内存泄漏也不会把本机内存吃光。第三日志级别调到notice。默认的verbose级别日志太多刷屏严重。notice级别只记录重要信息排查问题时够用。第四把redis-server.exe的路径加到系统环境变量PATH里。这样在任何目录下都能直接执行redis-cli不用每次都cd到安装目录。6.2 从本地到生产的配置差异提醒本地开发环境和生产环境有几个关键差异迁移的时候要注意生产环境一定要开持久化而且建议RDB和AOF同时开。RDB用于快速恢复AOF用于保证数据不丢。本地可以关生产绝对不能关。生产环境的bind和防火墙规则要严格配置不要用0.0.0.0裸奔。密码要设复杂一点定期更换。生产环境的maxmemory要根据实际数据量来设一般建议不超过物理内存的70%。淘汰策略根据业务场景选缓存场景用allkeys-lru持久化数据用noeviction。还有一点Windows社区兼容版不适合用在生产环境。生产环境应该用Linux原生Redis性能和稳定性都更好。Windows版只适合开发和测试。6.3 后续可以扩展的方向如果你已经把Windows本地Redis7跑起来了接下来可以往这几个方向扩展一是试试WSL2方案体验一下原生Linux版Redis7的完整功能特别是Function和Sharded Pub/Sub这些新特性。二是用Docker Desktop跑Redis7体验一下容器化部署的便利性顺便学学Docker Compose编排。三是把本地Redis接入你的开发框架比如Spring Boot的Spring Data Redis、.NET的StackExchange.Redis写几个单元测试验证缓存逻辑。四是研究一下Redis7的Function功能它可以用JavaScript写服务端逻辑替代部分Lua脚本场景是7.x版本最值得关注的新特性。我在实际使用中发现Windows本地Redis7最大的价值就是快——下载解压改配置五分钟就能跑起来不折腾。对于日常开发调试来说这就够了。等到需要更完整的功能时再迁移到WSL2或Docker也不迟。踩过几次坑之后我现在基本就是社区兼容版跑本地开发WSL2跑集成测试两套环境各司其职效率最高。
返回列表