
真要在 Win10 上把 Redis 跑起来十个人里有八个会卡在最后一步服务注册完了点启动弹一句本地计算机上的 Redis 服务启动后停止某些服务在未由其他服务或程序使用时将自动停止。这个报错本身没告诉你任何有用信息日志里那行关键提示才是真正的线索。这篇就把 win10 环境下 Redis 的安装配置从头到尾走一遍重点放在 Redis 服务无法启动的排查思路上——不是给你一句重装试试而是把每一种失败的可能路径都摊开讲清楚包括报错怎么读、端口怎么查、配置文件里哪个参数最容易埋雷。适合刚上手缓存中间件的后端开发、需要本地环境做接口调试的同学也适合被服务启动问题折磨过想找根因的人。1. 为什么在 Win10 上折腾 Redis场景与方案选型1.1 本地跑 Redis 的真实使用场景很多人是被动装 Redis 的接手一个老项目配置文件里写着spring.redis.host127.0.0.1跑起来就报连接拒绝于是开始在本机找 Redis。这是最典型的场景也是最容易踩坑的场景——因为你只想要能连上却撞上了一整套服务注册、配置路径、权限的坑。除了被动安装本地 Redis 还有几类很实在的用途。第一类是学习数据类型Redis 的 String、List、Hash、Set、ZSet 加上 Bitmap、HyperLogLog、Stream光看文档没用敲一遍命令才会有感觉。第二类是本地缓存加速开发阶段不想每次都打远程测试库把热点数据塞进本机 Redis接口响应能快一个数量级。第三类是接口限流与计数器比如登录失败次数限制、短链访问量统计这类需求用 Redis 的原子自增实现最省事。第四类是消息队列与延时任务的演示List 做简单队列、ZSet 做延时队列够小团队用很久。第五类是单元测试跑集成测试时用本地 Redis 而不是共享环境避免互相污染数据。判断自己属于哪一类会直接影响后面的配置策略。如果只是本地学习bind 127.0.0.1加个密码就够了如果需要给局域网里的同事连就得处理绑定地址和防火墙如果要做压测maxmemory和持久化策略就得提前规划。1.2 Windows 版 Redis 的三种装法对比Windows 不是 Redis 的原生主场Redis 官方只在 Linux 系上做长期维护所以 Windows 上能跑起来的方案本质上都是移植或者套壳。主流就三条路各有各的代价。方案优点缺点适合谁微软归档的 Windows 移植版zip/msi解压即用注册成系统服务开机自启和 Win10 融合度最高版本停留在 5.x 时代新命令如部分 Stream 特性缺失只想本地跑起来做开发调试的人WSL2 里装 Linux 版 Redis版本新行为和线上一致命令完整需要开启虚拟化功能内存占用偏高跨文件系统访问有性能损耗想贴近生产环境、对版本有要求的人Docker Desktop 跑官方镜像镜像即环境删了无残留主从、哨兵随便搭Docker Desktop 本身在 Win10 家庭版上要先配 WSL2资源开销大习惯容器化、需要多实例的人这里有个经验判断如果你只是想解决项目连不上 Redis选第一种五分钟能搞定如果你想在本地复现生产环境和行为差异选第二种如果你本来就装了 Docker那第三种几乎没有额外成本。三种方案里出问题概率最高的是第一种因为服务注册这一步牵扯到 Windows 服务管理器而服务管理器的报错信息出了名的含糊。这也正是本文重点要拆的部分。1.3 版本号怎么挑以及一个容易忽略的细节Windows 移植版的版本号看两个地方主版本和编译日期。主版本决定了支持的命令集编译日期决定了修补了哪些旧问题。选的时候优先选Redis-x64-5.0.14.1这一类带 x64 标识、日期较新的包不要去用那种来路不明的、名字里带一堆后缀的压缩包。还有一个特别容易被忽略的细节Windows 移植版分redis.windows.conf和redis.windows-service.conf两个配置文件。前者是命令行手动启动时用的后者是注册成 Windows 服务后读取的模板。很多人注册服务时用了默认参数服务读的是内置默认值结果自己改的redis.windows.conf完全没生效改了半天配置发现没反应就是因为这个。我的做法是只保留一份配置文件注册服务时用完整路径明确指定彻底杜绝这个歧义。2. 安装前的环境准备与目录规划2.1 系统层面要先确认的三件事第一确认系统是 64 位。这个不用去翻系统属性命令行敲一下就清楚wmic os get osarchitecture输出64-bit就没问题。32 位系统跑不了新版移植包虽然还有老版本能用但没有折腾的必要。第二确认管理员权限可用。注册 Windows 服务必须提权普通用户执行--service-install会直接失败。建议的做法是以管理员身份打开一次命令提示符或者 PowerShell后续所有涉及服务操作的命令都在这个窗口里执行别用一会儿开一会儿关。第三处理系统杀毒软件的扫描干扰。这一点我必须强调因为它是我遇到过最隐蔽的一类服务启动失败。杀毒软件在服务注册瞬间会扫描可执行文件扫描期间文件被占用服务管理器拿不到句柄启动就失败了而且日志里什么都不写。正确的处理方式不是把防护全关掉而是把 Redis 所在目录加入排除项白名单让它跳过实时扫描。这样既解决了问题也不影响整机防护。还有一个细节确认安装路径里没有中文、没有空格。C:\Program Files\Redis这种路径带空格在某些版本的移植包里会导致服务启动时的参数解析出错D:\我的工具\redis这种带中文的路径出问题的概率更高。老老实实用D:\Redis最省心。2.2 目录结构规划别把文件全堆在一个文件夹里很多人解压完直接把 data 文件、日志、配置、可执行文件全扔在一个目录跑一段时间后目录里几十个文件想找个日志都费劲。我建议一开始就把结构分好D:\Redis\ ├── bin\ # redis-server.exe、redis-cli.exe、redis-benchmark.exe ├── conf\ # redis.windows.conf ├── data\ # dump.rdb、appendonly.aof └── log\ # redis.log这么分有三个实际好处。一是备份和迁移简单只要拷贝 conf 和 data 两个目录就完成了迁移。二是权限控制清晰如果后面需要给不同账号分配不同目录权限粒度可控。三是排查问题时不会混淆——日志在 log 里数据在 data 里看目录名就知道去哪个文件夹找。需要提醒的是data目录必须提前建好。Windows 移植版的 Redis 不会自动创建dir参数指向的目录如果目录不存在服务启动时会因为无法写入 RDB 文件而失败报错信息同样很含糊。2.3 安装包获取与校验下载渠道就一个原则用官方归档渠道拿包。拿到压缩包之后养成校验哈希的习惯尤其是从第三方转存的链接下载的包。校验命令certutil -hashfile Redis-x64-5.0.14.1.zip SHA256把输出的哈希值和官方公布的对比一致再用。这一步看起来多余但确实有人因为拿到来路不明的包装完之后系统里多了一堆莫名其妙的计划任务。花三十秒校验省掉后面两小时的清理。解压的时候用系统自带的解压功能或者 7-Zip 都行但要注意解压完成后确认redis-server.exe存在且能被双击识别如果双击报不是有效的 Win32 应用程序说明包本身损坏或者架构不对重新下载。3. 手把手安装从手动启动到注册服务3.1 先手动启动一次别急着注册服务这一步是很多人跳过的也是导致后面排查困难的根源。正确的顺序是先手动跑通再注册服务。手动跑通了说明配置、目录、端口都没问题那么注册服务后如果启动失败问题范围就缩小到服务层面的环境差异上排查效率完全不一样。手动启动命令在D:\Redis\bin目录下执行redis-server.exe ..\conf\redis.windows.conf注意这里的路径写法。用相对路径能跑通的前提是你的工作目录正确所以我更推荐直接用绝对路径D:\Redis\bin\redis-server.exe D:\Redis\conf\redis.windows.conf启动成功的标志是控制台打印出 Redis 的 ASCII 标识图下面跟着端口号、PID、配置文件路径三行信息。这时候控制台窗口不能关关了服务就停了。另开一个窗口用客户端连一下D:\Redis\bin\redis-cli.exe -h 127.0.0.1 -p 6379进去之后敲ping返回PONG就说明通了。再敲set testkey hello和get testkey验证读写正常。最后shutdown nosave或者直接 CtrlC 停掉手动实例准备注册服务。注意注册服务之前一定要先把手动启动的实例停掉。否则服务启动时会因为 6379 端口被占用而失败而报错信息只会告诉你服务无法启动不会告诉你端口冲突。这个坑我见得太多了。3.2 redis.windows.conf 关键参数逐条拆解配置文件是整件事的核心我按重要性逐条讲每一条都说清楚为什么这么设。bind 127.0.0.1 port 6379 timeout 0 tcp-keepalive 300 loglevel notice logfile D:/Redis/log/redis.log databases 16 save 900 1 save 300 10 save 60 10000 dbfilename dump.rdb dir D:/Redis/data requirepass your_password_here maxmemory 512mb maxmemory-policy allkeys-lru appendonly yes appendfsync everysecbind 127.0.0.1决定谁能连。写127.0.0.1就是只允许本机连最安全想让局域网其他机器连得改成0.0.0.0或者写具体网卡地址。这里有个坑改成0.0.0.0之后如果不设密码等于把数据摆在局域网里公开。所以绑定地址和密码这两项必须一起考虑。port 6379是默认端口一般不动。如果本机已经有别的实例占着改成 6380 之类记得同步改客户端配置。timeout 0表示连接永不超时。开发环境设 0 方便调试如果端口暴露在局域网建议设成 300让闲置连接自动断开减少资源占用。logfile指定日志路径。这一项极其关键——Redis 服务启动失败时唯一的有效线索就在这里。注意路径用正斜杠/而不是反斜杠\配置文件里反斜杠是转义字符写错了会导致日志文件创建失败进而整个服务启动失败。save三行是 RDB 持久化的触发条件含义分别是900 秒内至少 1 个键变化、300 秒内至少 10 个键变化、60 秒内至少 10000 个键变化满足任一条件就写一次快照。如果只是本地调试、不关心数据持久性可以把这三行全部注释掉能省掉一些磁盘 IO。但要注意一旦save全注释掉重启后数据就没了。dir是工作目录RDB 和 AOF 文件都存在这里。这个参数是服务启动失败的高频元凶之一因为服务启动时的工作目录可能和你在命令行里不一样相对路径会解析到别的地方。所以这里必须写绝对路径。requirepass设密码。设置之后所有客户端连接都要先auth。这里有个常见误解以为设了密码服务就安全了。实际上密码是明文存在配置文件里的而且如果没开 TLS网络传输也是明文的。本地开发设一个简单密码足矣别用生产环境的密码。maxmemory 512mb限制内存上限。不设的话Redis 会一直吃内存直到系统扛不住。本地开发建议设 512MB 到 1GB。设了这个参数就必须配maxmemory-policy否则内存满了之后写入操作会直接报错。maxmemory-policy allkeys-lru是淘汰策略含义是内存达到上限时在所有键里按最近最少使用原则淘汰。除此之外常用的还有volatile-lru只淘汰设置了过期时间的键、noeviction不淘汰写入直接报错。纯缓存场景用allkeys-lru如果数据不能丢就得用noeviction并做好监控。appendonly yes开启 AOF 持久化appendfsync everysec表示每秒同步一次磁盘。AOF 比 RDB 更接近实时但文件体积更大、重启恢复更慢。我的习惯是本地调试只开 RDB需要保存重要测试数据时再开 AOF。3.3 注册为 Windows 服务并设置自启配置确认无误、手动启动验证通过之后就可以注册服务了。命令如下注意用管理员身份执行D:\Redis\bin\redis-server.exe --service-install D:\Redis\conf\redis.windows.conf --loglevel verbose这条命令的每个部分都有讲究。--service-install是安装服务的动作紧跟的配置文件名必须给全路径否则服务启动时会去默认位置找配置找不到就用内置默认值--loglevel verbose表示安装过程输出详细日志方便确认服务注册到了哪一步。安装成功后命令行不会有华丽提示只打印一行服务注册成功的信息。这时候去服务管理器services.msc里找能看到一个名为Redis的服务启动类型默认是自动。配套的几个命令记牢# 启动服务 D:\Redis\bin\redis-server.exe --service-start # 停止服务 D:\Redis\bin\redis-server.exe --service-stop # 卸载服务 D:\Redis\bin\redis-server.exe --service-uninstall需要说明的是--service-uninstall卸载服务之后注册表里可能还有残留项。彻底清理用系统命令sc query Redis sc delete Redissc query先确认服务状态sc delete再删。如果sc delete报指定的服务未安装说明已经清干净了。另外一个很实用的操作如果修改了配置文件必须重启服务才生效。重启命令就是先--service-stop再--service-start。改配置不重启然后抱怨改了没用这是新手最常见的自我怀疑来源。3.4 端口放行局域网访问绕不过去的一步如果需要让局域网里其他机器连过来光改bind是不够的Windows 防火墙还得放行 6379 端口。图形界面操作路径是控制面板 - 系统和安全 - Windows Defender 防火墙 - 高级设置 - 入站规则 - 新建规则选端口填 TCP 6379允许连接。命令行方式更快管理员权限下执行netsh advfirewall firewall add rule nameRedis 6379 dirin actionallow protocolTCP localport6379放行之后在另一台机器上用telnet 你的IP 6379测试连通性。如果不通先确认防火墙规则生效再确认bind改对了最后确认两台机器在同一网段。三步下来基本能定位。注意局域网放行加不加密码是两个完全不同的安全等级。Redis 早期版本有未授权访问的历史问题端口一旦对外开放必须设requirepass并且密码不要用123456这类弱口令。4. Redis 服务无法启动的排查实录这一章是全文的重点。服务启动失败的报错信息永远只有一句话但背后的原因至少有十来种。我的排查方法固定是四步看日志、查端口、验配置、看权限。4.1 第一步永远是看日志别瞎猜日志文件位置就是配置文件里logfile指定的路径。如果那个文件不存在说明 Redis 连日志都没写出来就挂了问题出在更早的阶段。这时候有两个备选查看点一是事件查看器。eventvwr.msc打开进Windows 日志 - 应用程序找来源为Redis或者Application Error的条目。服务管理器启动失败时Windows 一定会在这里留下痕迹。很多在日志文件里看不到的东西事件查看器里有。二是控制台直接启动看输出。把服务停掉用命令行手动启动一次报错会直接打在屏幕上比翻日志快得多D:\Redis\bin\redis-server.exe D:\Redis\conf\redis.windows.conf常见的输出信息对应关系是这样的Cant chdir to D:/Redis/data说明 dir 目录不存在或者路径写错Opening the temp file for AOF rewrite后面跟错误说明 AOF 文件有损坏Warning: no config file specified说明配置文件没被读到Creating Server TCP listening socket *:6379: bind: No error这一类通常意味着端口被占用。看到报错之后先别急着改先确认这个报错是不是完整的。有些错误是连锁的第一个错误解决了后面的才暴露出来。我的习惯是把报错原文复制到一个临时文本里逐条排除。4.2 报错现象对照表把常见情况整理成一张表遇到问题先对号入座。现象大概率原因解决方向服务启动后立即停止无任何提示端口被占用 / 配置文件路径不对netstat 查端口检查服务注册时的配置路径日志报Cant chdir to ...dir 目录不存在或无写入权限手动创建目录检查目录安全属性日志报Unrecoverable error reading the append only fileAOF 文件损坏用redis-check-aof --fix修复或删除 AOF 重建日志报Bad file format reading the append only fileRDB 文件损坏或版本不匹配用redis-check-rdb检查备份后删除重来服务在服务列表里状态卡在正在启动杀毒软件扫描占用文件将 Redis 目录加入排除项sc start提示拒绝访问未用管理员权限提权重试客户端连接报NOAUTH Authentication required服务端设了密码客户端没认证客户端执行auth 密码客户端连接报Connection refused服务没起来 / 端口错了 / 防火墙拦了按顺序排查这三项改配置后行为没变化服务没重启或读的是另一份配置文件重启服务确认注册时指定的配置路径这张表的用法是先看现象落在哪一行然后按解决方向走。如果现象不在表里回到 4.1 看日志日志会告诉你更多。4.3 三类高频坑端口、路径、权限端口冲突是占比最高的一类。排查命令netstat -ano | findstr :6379如果输出里有LISTENING状态的记录后面那列数字就是占用进程的 PID。用下面的命令查是什么程序tasklist | findstr 12345把 12345 换成实际的 PID。常见的情况是之前手动启动的 Redis 实例没关掉或者另一个 Redis 服务实例还在跑。解决办法就是先停掉占用方。如果确认是残留的 Redis 进程用taskkill /PID 12345 /F强制结束然后再启动服务。这里有个隐蔽情况netstat显示 6379 被占用但tasklist查不到对应程序或者显示的是系统进程。这通常是端口处于TIME_WAIT状态属于正常的连接回收过程等一两分钟自动释放。不用慌。配置路径问题排第二。它的表现形式非常迷惑命令行手动启动一切正常注册成服务就失败。原因就是前面提到的——服务启动时的工作目录不是你执行命令的目录配置里所有相对路径都会解析到C:\Windows\System32之类的系统目录下。所以dir、logfile、dbfilename这些涉及路径的参数一律写绝对路径并且用正斜杠。还有一个更细的点注册服务时如果没指定配置文件全路径服务会使用内置默认配置。这时候你改了半天redis.windows.conf服务压根没读它。判断方法很简单看日志文件有没有生成——如果服务用的默认配置logfile默认是空字符串日志会打到标准输出而不是文件你在文件系统里找不到任何日志。权限问题排第三也是最容易被忽略的。表现形式是目录存在、路径正确、端口也通但服务就是起不来。原因是服务运行身份对data目录没有写权限。解决办法有两种一是给data和log目录添加NETWORK SERVICE或者LOCAL SERVICE的完全控制权限二是把服务的登录身份改成当前管理员账号。图形界面在服务 - 属性 - 登录里改命令行用sc config Redis obj .\Administrator password 你的密码。我个人的偏好是第一种因为改服务登录身份会引入密码管理的麻烦密码一改服务就起不来。给目录加权限更彻底。4.4 启动后马上停止几种不常见但很致命的原因除了上面三类还有几种情况出现频率低但杀伤力大。RDB 文件损坏。上一次启动时异常断电或者被强杀RDB 文件写了一半下次启动读取时直接失败。这时候日志里会明确写 RDB 读取错误。处理办法先备份dump.rdb然后用检查工具D:\Redis\bin\redis-check-rdb.exe D:\Redis\data\dump.rdb如果确认损坏无法修复删掉这个文件重新启动代价是丢失上次快照之后的数据。本地开发环境基本无所谓。AOF 文件损坏。AOF 是追加写的如果写入过程中中断文件末尾会有半条命令启动时解析失败。修复命令D:\Redis\bin\redis-check-aof.exe --fix D:\Redis\data\appendonly.aof这个工具会把文件末尾不完整的命令截掉通常能救回来。修复前记得备份原文件。磁盘空间不足。这个原因最容易被忽略因为错误信息五花八门。Redis 启动时要写 RDB 或者 AOF磁盘满了就写不进去服务启动失败。检查一下D:\Redis\data所在分区剩余空间留出至少几 GB 的余量。系统内存紧张。如果maxmemory设得比实际可用内存还大或者机器本身内存占用已经很高Redis 启动时分配内存失败服务就起不来。这种时候日志里可能只有一行很简短的错误。把maxmemory调到合理值或者关掉一些占内存的程序。配置文件编码问题。这个坑非常阴间用某些编辑器保存redis.windows.conf时默认存成了带 BOM 的 UTF-8 或者带 CRLF 换行的格式Redis 解析时把 BOM 头当成了非法字符。表现就是手动启动无反应或者报配置解析错误。解决办法是把文件另存为不带 BOM 的 UTF-8 或者 ANSI。我踩过一次查了两个小时最后用十六进制查看器才发现文件头多了三个字节。5. 客户端连接验证与基础调优5.1 命令行与图形化客户端双验证服务起来了不代表能用必须实际连一次。命令行验证用redis-cliD:\Redis\bin\redis-cli.exe -h 127.0.0.1 -p 6379 -a your_password-a后面跟密码。注意命令行里带密码会在 shell 历史里留痕更规范的做法是连进去之后用auth命令认证D:\Redis\bin\redis-cli.exe -h 127.0.0.1 -p 6379 127.0.0.1:6379 auth your_password OK 127.0.0.1:6379 ping PONG 127.0.0.1:6379 info serverinfo server会输出一大堆信息重点看redis_version、uptime_in_seconds、tcp_port三项。uptime_in_seconds数字很小说明服务刚重启过如果这个数字一直是几秒钟说明服务在反复重启问题没解决。图形化客户端方面Redis Desktop Manager 这一类工具用起来直观能看到键的树形结构和值的内容调试时很方便。选工具的时候注意一点客户端版本和服务端版本差异太大时某些新命令会报错这是因为客户端不认识新命令的返回值格式不是服务端的问题。遇到这种情况用redis-cli再验证一次就能区分。连接成功之后有个必做的动作进客户端看一下databases数量对不对。默认 16 个库如果配了别的数字客户端要能识别。有些客户端默认只连 0 号库切库要用select 1命令。5.2 持久化方案怎么选RDB 还是 AOF这是配置阶段最需要动脑子的地方两个方案不是二选一的关系可以同时开。RDB 是定期快照把整个内存数据 dump 成一个二进制文件。优点是文件紧凑、恢复快、对性能影响小缺点是快照之间的数据会丢。比如 60 秒触发一次快照结果第 59 秒断电这 59 秒的写入就没了。AOF 是追加日志每次写命令都记录到文件里。优点是丢失窗口小everysec模式下最多丢 1 秒缺点是文件体积大、恢复慢。AOF 文件会随着时间不断增长需要靠重写机制压缩重写过程本身也消耗资源。我的建议是分场景本地开发调试只开 RDB甚至把save全注释掉反正数据不重要需要保留重要测试数据的开 AOF 加everysec做性能压测的时候两个都关掉避免磁盘 IO 干扰压测结果。还要注意一个参数appendfsync。它有三个取值always表示每条命令都同步磁盘最安全但性能最差everysec每秒同步折中方案no交给操作系统决定性能最好但可能丢较多数据。生产环境一般用everysec本地开发用no也完全没问题。5.3 maxmemory 与淘汰策略的配套计算maxmemory设多少不能拍脑袋。合理的思路是看机器总内存减去操作系统占用、减去你开发用的 IDE 和其他工具的内存剩下的再打个七折给 Redis。比如 16GB 内存的机器系统加常用软件占 6GB剩 10GBRedis 给 512MB 到 1GB 就够本地开发用了没必要给太多。设置之后一定要配maxmemory-policy。如果不配默认是noeviction内存一满所有写操作都返回错误表现为读取正常、写入全失败很有迷惑性。127.0.0.1:6379 config get maxmemory 127.0.0.1:6379 config get maxmemory-policy 127.0.0.1:6379 info memoryinfo memory能看当前内存使用量、内存碎片率。碎片率长期高于 1.5 说明内存碎片比较多可以考虑重启服务整理或者调整分配器参数。本地环境不用太在意这个指标。另外推荐开启慢查询日志slowlog-log-slower-than 10000 slowlog-max-len 12810000的单位是微秒也就是记录超过 10 毫秒的命令。slowlog-max-len是保留条数。查看慢查询127.0.0.1:6379 slowlog get 10本地开发时这个配置能帮你快速发现写坏了的命令比如误用keys *扫全库。6. 实操心得与常见问题速查6.1 我踩过的几个坑你可以少走点弯路第一个坑改了配置忘记重启。这个坑我踩过不止一次改完maxmemory直接在客户端用config get验证发现还是旧值然后开始怀疑配置文件没生效折腾半天才想起来服务根本没重启。后来我养成了习惯所有配置修改都用命令行改一次config set确认生效后再同步写回配置文件重启服务做最终验证。这样两步走既有即时反馈也保证了持久化。第二个坑--service-install会写系统注册表。这个操作不是纯文件层面的卸载的时候如果只删目录不卸载服务系统里会留一个指向不存在路径的服务项每次开机都报错。所以正确的卸载顺序是先--service-uninstall再sc delete确认删干净最后删目录。顺序反了就要手动去注册表里清理麻烦得很。第三个坑bind 0.0.0.0加上没设密码然后完全忘记这件事。后来某天发现本地 Redis 里多了一堆不认识的键才知道局域网里有人扫到了。所以绑定地址和密码必须成对考虑改一个就检查另一个。第四个坑用中文注释写配置文件。Redis 的配置解析器对非 ASCII 字符处理得不好注释里带中文有可能导致解析失败。现在我写配置文件一律用英文注释或者干脆不写注释配置说明单独放在一个 README 里。第五个坑把 Redis 装在了带空格的路径下服务能注册成功但启动时报参数错误。这个我在 2.1 提到了这里再强调一次路径干净比什么都重要。6.2 日常维护速查表我要做什么命令查看服务状态sc query Redis启动 / 停止服务redis-server --service-start/--service-stop查看端口占用netstat -ano | findstr :6379查看进程名tasklist | findstr PID强制结束进程taskkill /PID PID /F检查 RDB 文件redis-check-rdb dump.rdb修复 AOF 文件redis-check-aof --fix appendonly.aof查看内存情况redis-cli info memory查看慢查询redis-cli slowlog get 10在线修改参数redis-cli config set maxmemory 1gb持久化配置到文件redis-cli config rewrite查看所有键慎用redis-cli dbsize优于keys *这张表我贴在显示器边上过很长一段时间现在基本背下来了。其中config rewrite那个特别值得说一句如果之前一直是手动改配置文件那么config set改的参数在重启后就丢了用config rewrite可以把当前运行时的配置回写进文件避免两边不一致。6.3 迁移与卸载别留下尾巴迁移到另一台机器需要拷的就是三个东西conf目录、data目录、以及bin目录下的可执行文件。前提是目标机器上的目录结构保持一致否则配置文件里的绝对路径要全部改一遍。所以我现在的习惯是配置文件里所有路径全部用统一前缀迁移时整批替换比一条条改快得多。卸载的完整流程写清楚# 1. 停止服务 D:\Redis\bin\redis-server.exe --service-stop # 2. 卸载服务 D:\Redis\bin\redis-server.exe --service-uninstall # 3. 确认服务已删除 sc query Redis # 4. 如果还有残留强制删除 sc delete Redis # 5. 删除防火墙规则 netsh advfirewall firewall delete rule nameRedis 6379 # 6. 最后才删目录第 5 步容易被忘防火墙规则不会随目录删除而消失留着一条指向不存在程序的规则没意义顺手清掉更干净。最后分享一个小技巧如果你经常需要在手动启动调试和服务方式运行之间切换可以写两个批处理文件放在桌面一个负责停服务并前台启动方便看实时日志一个负责停掉前台实例并启动服务方便日常使用。这样切换成本降到双击一次比每次敲一长串命令舒服太多。这个做法我在好几台开发机上都用过实测下来很省事。