ARTICLE DETAIL

资讯详情

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

Windows11安装Redis实战指南:配置、服务与避坑

Windows11安装Redis实战指南:配置、服务与避坑 要在Windows 11上把Redis装明白其实没想象中那么轻松。我刚接触Redis时也以为无非就是下载解压、启动服务结果真到自己上手光是选安装方案、改配置、注册服务这几步就踩了不少坑。这篇东西我按实际折腾过的顺序来写结合我在Windows 11上的实测过程把安装、配置、验证、排错整个链路一次讲透。不管你之前完全没接触过Redis还是已经用过Linux版想转到Windows上临时开发这篇文章都能让你少走弯路。1. 先搞懂一件事Windows上装Redis到底有哪几条路1.1 主流的三种方案对比先说结论Redis官方其实并不提供Windows原生安装包官方文档里只推荐Linux和macOS。但Windows用户量太大所以社区里有几条成熟路线我在Win11上实测后给你梳理清楚。方案本质版本支持适合场景复杂度微软/社区移植版将Redis源码编译为Windows可执行文件通常到Redis 5.0.x本机开发调试、临时测试低WSL2内运行官方Redis在Windows的Linux子系统里安装原生Redis任意版本可随apt安装需要贴近生产环境的行为中Docker容器运行Redis用容器镜像本质仍是Linux环境任意版本已经有Docker环境中还有一种叫Memurai的第三方兼容版它兼容Redis的API和数据结构可以跑Redis 7.x语义但涉及授权问题日常开发用起来也得适应它的配置体系我这次不讲重点说前面三条路。1.2 为什么我推荐先走Windows原生移植版如果你是第一次在Win11上安装Redis我建议先选Windows原生移植版。原因很简单安装门槛最低解压即用不需要额外安装WSL或Docker而且对IDE、命令行、客户端工具的配合最直接——Redis Desktop Manager这类可视化工具直接连localhost:6379就能用。WSL2和Docker方案虽然更“正宗”但对于只想在Windows上跑个Redis做缓存、消息队列或分布式锁的项目来说原生移植版已经完全够用启动速度也比开个虚拟机快得多。我实际遇到的情况是项目里要用Redis做中间件临时从mac切到Win11笔记本上改代码需要快速在本地起一个Redis实例。用WSL2当然没问题但还得装子系统、配发行版时间成本太高而原生移植版五分钟就能搞定。所以这篇文我以原生移植版为主WSL2和Docker的手把手步骤放最后面单独补。2. 下载与安装前必须注意的版本坑2.1 去哪里下别下到什么“优化版”Windows原生版Redis目前最主流的来源是tporadowski/redis这个开源项目发布的Releases版本一般能找到redis-x64-5.0.14.zip这个文件。这是社区维护的Redis 5.0.x移植版稳定性和兼容性经过了大量Windows用户验证。我在Win11上实测过几个不同的下载源发现有些站点提供的压缩包不光版本旧甚至捆绑了奇怪的启动脚本杀毒软件直接报警。所以下载时注意两点一是认准GitHub Releases页面上的官方zip包二是看压缩包内是否包含redis-server.exe、redis-cli.exe、redis-benchmark.exe这几个标准文件缺斤少两的包直接丢。2.2 检查系统环境并准备目录Win11安装Redis前确认两件事操作系统版本Win11 21H2以上最好因为后续注册Windows服务时权限处理更干净。但实测Win11 26H2也没问题方法完全相同。运行库部分Windows移植版需要VC运行库支持vcredist如果启动时提示缺少MSVCP140.dll去微软官网装一个最新的VC 2015-2022 x64运行库就行。目录规划也很重要别随手解压到桌面。我习惯放在C:\Redis你可以放D盘但路径里不要有中文和空格后面注册服务和命令行操作会省去一堆转义麻烦。# 以管理员身份打开PowerShell或CMD mkdir C:\Redis # 将zip包解压到该目录确认目录下直接有redis-server.exe这一步看似基础但很多人就是因为目录路径带了空格后面写配置文件和服务参数时各种奇怪报错。我遇到过一个案例同事把Redis解压到C:\Program Files\Redis下面结果服务安装命令的引号怎么都不对折腾了半小时。3. 配置文件修改这才是安装过程中的重头戏3.1 先分清两个配置文件解压后你会发现目录里有两个配置文件redis.windows.conf和redis.windows-service.conf。前者是直接启动redis-server.exe时默认读取的配置后者是注册为Windows服务后读取的配置。很多教程只说“改配置”但不说改哪个结果改了redis.windows.conf服务用的是另一个文件排查半天。我的习惯是注册服务运行用redis.windows-service.conf独立调试用redis.windows.conf。所以两个文件都改一遍保持配置一致。你要实在嫌麻烦至少把redis.windows-service.conf改好因为服务方式才是Windows上长期运行的常态。3.2 核心配置项逐条说明用记事本或VS Code打开配置文件按下面对照着改。我标出的是最实用、最容易踩坑的几项。# 绑定地址默认127.0.0.1。本机开发就保持千万别改成0.0.0.0除非你知道后果 bind 127.0.0.1 # 保护模式同样保持默认yes protected-mode yes # 端口默认6379一般不用改 port 6379 # 后台运行Windows版没有daemonize概念配置项存在但不生效所以不纠结它 # 设置密码。强烈建议设下面会讲为什么 requirepass yourStrongPassword # 数据持久化文件名和目录 dbfilename dump.rdb dir ./ # 日志等级开发时可设置notice排查问题临时改debug loglevel notice logfile 这里有几个新手常见误区很多人会把daemonize yes设上但Windows移植版下这个配置不生效Windows下要后台运行需要通过注册服务或者start /b命令方式配置里写了也没用。logfile 表示默认输出到stdout。注册Windows服务时如果想有日志文件可以写绝对路径比如logfile C:/Redis/redis.log注意Windows下斜杠方向双反斜杠也行。Redis默认开启了RDB快照持久化开发机上顺手开着就好文件就在dir指定目录下。如果后面用到AOF重写功能再改appendonly yes。3.3 密码这一项别偷懒我在实际项目里见过不少人在Windows上装Redis因为只是本机开发就不设密码。可问题是如果你哪天把绑定地址改成了0.0.0.0或者公司和家庭网络环境有异常扫描Redis默认端口6379被扫到后别人可以直接执行FLUSHALL把你数据全清掉。这种事不是危言耸听。所以配置文件里一定加上requirepass 你自定义的复杂密码密码验证后命令行操作就要这么写redis-cli -a 你的密码 ping不加-a的话执行keys *、set等命令都会报NOAUTH Authentication required。开发时嫌每次敲-a麻烦可以用redis-cli进去后再执行AUTH 密码效果一样。4. 启动、注册服务与验证从命令行跑到Windows服务4.1 先手动启动一次验证配置改完之后别急着注册服务先在命令行模式下验证配置是否正确。进入解压目录执行cd C:\Redis .\redis-server.exe redis.windows-s.conf注意我这里是故意写的redis.windows-s.conf——因为很多人会手滑实际上你要写全redis.windows.conf或redis.windows-service.conf。如果配置文件写错路径会报Cant open the config file。看到类似这样的输出就说明启动成功了[xxxxx] Redis version5.0.14, bits64, commitxxxxxxxx, modified0, pidxxxx, just started [xxxxx] Configuration loaded [xxxxx] * Ready to accept connections“Ready to accept connections”出现说明这个端口已经正常监听。这时打开另一个终端窗口做验证redis-cli -a 你的密码 ping能回PONG说明Redis服务完全正常。4.2 注册为Windows服务命令行窗口关掉Redis就停了这在开发时很烦特别是你希望Redis像MySQL、Nginx一样开机自动跑。所以正式做法是注册成Windows服务以管理员身份打开CMD或PowerShellcd C:\Redis .\redis-server.exe --service-install redis.windows-service.conf --service-name Redis这里--service-name Redis是给服务起名可以改成任意名字。执行完提示Redis successfully installed as a service.就成功了。之后用下面几条命令控制# 启动服务 .\redis-server.exe --service-start --service-name Redis # 停止服务 .\redis-server.exe --service-stop --service-name Redis # 卸载服务 .\redis-server.exe --service-uninstall --service-name Redis也可以在Win11的“服务”管理工具按WinR输入services.msc里找到Redis服务右键启动、停止、设置开机自动启动。实测中注册服务后默认启动类型是“自动”重启机器Redis会自动起来。4.3 服务启动失败的几种情况我在Win11上就踩过服务启动失败的坑最常见是这三个一是配置里端口被占用。如果你之前装过其他东西占用6379端口服务起不来先查占用netstat -ano | findstr 6379看到对应PID后在任务管理器里找到那个进程确定可结束时杀掉再启动Redis服务。尤其注意有时候你自己手动起的redis-server.exe还挂着服务启动会提示端口占用先手动停掉。二是路径问题。注册服务时如果用了带空格的路径而且没加引号服务启动会因找不到exe失败。正确做法是服务安装命令执行时用cd进入目录后再运行避免路径前缀的麻烦。三是配置文件权限或格式问题。如果配置文件中混入了带BOM的UTF-8编码、或者写错选项名Redis会拒绝启动。检查配置文件最好是纯文本方式另存为UTF-8无BOM避免记事本默认带BOM。5. 启动后的数据验证和客户端连接测试5.1 五种基本数据类型快速验证Redis装好后不能只ping一下就完事。我用最常用的命令验证一下五种数据类型是否正常工作顺便检查配置有没有影响基本读写。redis-cli -a 你的密码进入命令行后依次执行# 字符串 set mykey hello get mykey # 哈希 hset user:1 name zhangsan age 18 hgetall user:1 # 列表 rpush mylist a b c lrange mylist 0 -1 # 集合 sadd myset x y z smembers myset # 有序集合 zadd myzset 1 one 2 two zrange myzset 0 -1 withscores这些命令都能返回预期结果说明Redis内部的数据编码、内存分配、网络回调都正常。测试完可以执行flushall清掉这些测试数据也可以留着当探索素材。实际开发中Redis的数据类型基本覆盖了缓存、计数、排行榜、会话存储、分布式锁这些典型场景这也是它能在中间件领域这么能打的原因。5.2 客户端可视化工具连接命令行用起来还是不够直观尤其是看缓存里的键值结构我习惯配合一个Redis Desktop Manager的替代品——Another Redis Desktop ManagerARDM来查看。GitHub上开源Win11下直接下载安装包就能用。连接配置非常简单Host: 127.0.0.1Port: 6379Password: 你的密码连接成功后你会看到一棵键值树可以按数据库编号默认16个库编号0到15切换也能直接看到每个键的TTL、类型和值内容。这对于排查缓存失效、序列化内容可读性问题帮助极大。我在实际项目中就靠它排查过一个典型的“乱码”问题——用Java的JDK序列化写入Redis的键值在客户端里看起来是一堆\xAC\xED\x00\x05换成StringRedisTemplate和JSON序列化后就正常了。可视化工具在这里一下就能看出序列化策略差异。5.3 性能基准不用跑满内存但要看基础吞吐装完Redis还是建议先跑个基准测试确认当前硬件环境下Redis的读写吞吐在正常范围。Windows移植版由于系统本身的原因性能会比Linux下略低但开发用途影响不大。.\redis-benchmark.exe -h 127.0.0.1 -p 6379 -a 你的密码 -c 50 -n 10000跑完后注意SET、GET的requests per second。Win11下实测单线程大概在5万到10万之间如果明显偏低看看是不是CPU频率被省电模式限制、杀毒软件实时扫描影响、或Windows Defender在扫描Redis目录。实在低得离谱把C:\Redis目录加入Defender排除项再测一次往往会有提升。6. 安装时容易忽略的两个问题内存策略和日志配置6.1 maxmemory与内存淘汰策略Windows版Redis最容易忽略的是退出策略。默认情况下Redis对内存使用没有上限开发机上Redis能吃掉所有可用内存。我建议在配置文件里直接限制maxmemory 512mb maxmemory-policy allkeys-lrumaxmemory按你开发机物理内存大小灵活设设个512MB或1GB都行。maxmemory-policy选allkeys-lru表示内存满了后按最近最少使用淘汰任意键如果你只希望淘汰设置了过期时间的键用volatile-lru。特别注意如果配置了maxmemory但没配maxmemory-policyRedis默认策略是noeviction也就是内存满后写操作直接报错。我遇到过同事把缓存写满后服务直接返回OOM错误半天找不到原因就是这里少配了一行。这个坑很隐蔽因为开发初期数据量小根本触发不了。6.2 日志文件这样配排查故障才方便再强调一次日志。注册成服务后如果logfile留空日志输出到系统服务的stdout里你很难看到。我强烈建议配置文件里写loglevel notice logfile C:/Redis/redis.log注意Windows下路径分隔符建议统一用/因为Redis某些版本对\的转义处理会出问题。配置完重启服务后续排查问题时直接看redis.log比在服务管理工具里看错误弹窗高效得多。日志级别平时notice就好要是排查特别诡异的问题临时改成debug重启服务Redis会把每个命令的详细信息打到日志问题定位完再改回notice。这个操作方式在所有Redis版本里通用。7. WSL2和Docker方案何时值得切换7.1 WSL2安装官方Redis的完整步骤如果哪天你需要跑Redis 7.x或者项目里用到了Windows移植版缺失的模块和命令建议切换WSL2方案。Win11自带WSL支持安装步骤# 管理员PowerShell启用WSL并安装Ubuntu如果还没装 wsl --install # 重启后进入Ubuntu终端更新软件源并安装Redis sudo apt update sudo apt install redis-server -y安装完成后启动方式和Linux一模一样# 启动Redis服务 sudo service redis-server start # 验证 redis-cli pingWSL2默认网络模式是NATWindows本体通过localhost:6379可以直接访问WSL2里的Redis这点非常方便。我实测Win11下WSL2的Redis性能接近原生Linux适合做性能测试和生产环境行为复刻。但WSL2方案有个不小的问题WSL2虚拟机有自己的网络栈和生命周期如果Redis希望作为系统服务长期跑依赖WSL发行版开机自启。默认情况下WSL2里的服务在Windows重启后如果没有任何终端关联可能不会自动启动。解决方法是把sudo service redis-server start放入~/.bashrc或者用/etc/wsl.conf配置[boot]项下的command自动启动服务。这不是安装问题但很多人装完重启就发现Redis“消失”了以为没装好其实是被WSL的启动机制坑了。7.2 Docker方式安装Redis如果你本来就是Docker用户那用容器跑Redis是最干净、最隔离的方案。Win11装Docker Desktop后一条命令搞定docker run -d --name redis \ -p 6379:6379 \ -e REDIS_PASSWORD你的密码 \ redis:7-alpine这种方式的好处是版本随拉随用redis:7-alpine比redis:latest镜像体积小不少。配置项也改起来方便需要加配置就挂载目录和文件docker run -d --name redis \ -p 6379:6379 \ -v C:/redis-data:/data \ -v C:/redis.conf:/etc/redis/redis.conf \ redis:7-alpine redis-server /etc/redis/redis.confDocker Desktop本身在Win11上需要WSL2后端所以本质还是WSL但好处是编排、清理、版本切换都方便玩Redis集群主从、哨兵时尤其省心。7.3 我的最终取舍建议综合我的实际经验给出一张清晰的决策表只是开发调试、临时用一下原生移植版最合适解压即用占用资源最少。需要贴近生产环境、用Redis 7新特性WSL2方案性能最接近Linux且配置简单。项目里已有Docker环境或要跑Redis集群、多实例Docker方案隔离性好、版本切换方便。如果你要长期把Redis作为本机基础设施每天开着我更推荐原生移植版注册成Windows服务因为它不依赖额外的WSL发行版和Docker Desktop只要Windows启动Redis就在故障面最小。8. 我踩过的坑和给你的最后建议再说几个我实际踩过、前面零散提到但值得集中强调的坑。坑一配置文件改错文件。注册成服务后改的是redis.windows-service.conf不是redis.windows.conf。我当时业务紧急改完配置重启服务配置全没生效浪费了半小时排查。现在养成习惯改完配置先重启服务然后立刻redis-cli INFO server | findstr config_file看一下进程实际加载的配置文件路径。坑二密码带特殊符号导致连接失败。requirepass里的密码别带$、、|、这些Shell和URI敏感字符尤其用redis-cli -a或者客户端连接字符串时会解析得你怀疑人生。设置密码时最好就是大小写字母加数字顶多加个_或-。坑三服务启动后资源占用问题。移植版redis-server在空闲时CPU占用几乎为0内存占用和数据集大小相关。如果发现闲置状态内存占用还在不停涨检查maxmemory配置和是否有客户端在持续写入。之前我排查过一起内存缓慢上涨的问题定位后是某个测试脚本没关连接不断写入临时键导致的。注意如果开着AOF重写且触发频繁Windows上I/O模式容易因为文件锁导致进程卡顿可以通过调大auto-aof-rewrite-percentage降低重写频率来缓解。坑四不要用Windows自带的记事本改配置文件。Win11的记事本默认UTF-8编码对纯文本没问题但你一旦含中文注释并且另存成带BOM的格式Redis配置文件解析就可能出问题。我写配置文件的习惯是用VS Code保存时右下角选择UTF-8无BOM或者干脆全英文注释。最后安装完Redis后我建议你在项目架构层面顺带想清楚几件事是只用它做缓存还是还要用它做分布式锁、发布订阅、延迟队列这些使用场景决定你要不要深入了解Redis的线程IO模型、数据结构内部编码方式和持久化机制。装好Redis只迈出了第一步后面还有缓存穿透、缓存击穿、缓存雪崩、缓存一致性这些真问题等着。我的建议是先把基础安装和常用数据类型玩熟然后基于一个真实的小项目把缓存、分布式锁、消息队列三个场景都跑一遍你对Redis的理解会上一个台阶。
返回列表