Redis的下载与配置可以参考以下文章,写得十分清晰:
这里主要谈一谈其他一些补充说明。
和 Linux 的区别 在 Linux 上,Redis 可以通过:
让自己在后台运行(即脱离终端、输出日志到文件)。
👉 Windows 版本的 Redis 不支持 daemonize、supervised、pidfile 这些选项 。
daemonize 是 Unix/Linux 系统的概念,指的是在后台运行的守护进程
你 不能 在 redis.windows.conf 里加 daemonize yes,因为 Windows 版 Redis 不支持后台守护进程模式 。但可使用 Windows 服务(Windows Service)机制 来替代守护进程的功能。
Windows 服务模式下,Redis 的行为相当于:
daemonize = yes(Linux)
supervised = systemd(Linux)
由 Windows 服务管理器负责启动、停止、重启。
对比如下:
功能
Linux 做法
Windows 做法
后台运行
daemonize yes
注册为服务(--service-install)
管理方式
systemd / upstart
Windows Service
配置位置
redis.conf
redis.windows.conf
关闭终端后仍运行
✅
✅
支持 pidfile
✅
❌
开机自动启动
systemctl enable redis
sc config Redis start= auto
两种运行方式 也就是说,Windows 版的 Redis 只能:前台运行(普通命令行模式)、注册为系统服务自动后台启动。
启动方式
特点
是否需要CMD窗口
普通启动(前台)
你运行 redis-server.exe redis.windows.conf 后,Redis 会占用当前命令行窗口,窗口关闭就停止。
✅ 需要
服务模式(后台)
Redis 注册为系统服务,启动后在后台运行(即使关闭CMD也不会退出)。
❌ 不需要
方式 1:前台运行 打开一个 CMD 窗口运行 Redis 服务器: 1 redis-server.exe redis.windows.conf
再打开另一个 CMD 窗口连接客户端:
两个窗口都要保持打开,一旦关闭服务器窗口,Redis 进程就会被终止。
方式 2:安装为 Windows 服务(推荐) 这是等价于 Linux 的 daemonize yes 的做法。
在 CMD 或 PowerShell 运行:
1 redis-server.exe --service-install redis.windows.conf --loglevel verbose
然后启动服务:
1 redis-server.exe --service-start
从此以后 Redis 会:
在后台自动运行;
不再需要专门打开服务器窗口;
只需用 redis-cli.exe 连接即可;
可选设置为 开机自启 (sc config Redis start= auto)。
如果你想停止服务:
1 redis-server.exe --service-stop
或者卸载服务:
1 redis-server.exe --service-uninstall
📘 注意:服务名默认是 Redis,也可以通过 --service-name 自定义。
查看服务状态 你可以在 PowerShell 或 CMD 输入:
或者在「任务管理器 → 服务」中查看 Redis 是否正在后台运行。
根据 sc query Redis 的输出分析,Redis 服务正在正常运行 !现在可以直接使用 redis-cli 来连接和操作 Redis 数据库了。
状态分析:
SERVICE_NAME :服务名称为 Redis
TYPE: 10 WIN32_OWN_PROCESS :这是一个独立的 Win32 进程
STATE :运行状态,状态码 4 表示服务正在运行
WIN32_EXIT_CODE :退出代码为 0,表示正常无错误
运行状态说明:
状态码
状态说明
1
STOPPED(已停止)
2
START_PENDING(启动中)
3
STOP_PENDING(停止中)
4
RUNNING(运行中)
5
CONTINUE_PENDING(继续中)
6
PAUSE_PENDING(暂停中)
7
PAUSED(已暂停)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 stateDiagram-v2 [*] --> STOPPED state "1 STOPPED 已停止" as STOPPED state "2 START_PENDING 启动中" as START_PENDING state "3 STOP_PENDING 停止中" as STOP_PENDING state "4 RUNNING 运行中" as RUNNING state "5 CONTINUE_PENDING 恢复运行中" as CONTINUE_PENDING state "6 PAUSE_PENDING 暂停中" as PAUSE_PENDING state "7 PAUSED 已暂停" as PAUSED STOPPED --> START_PENDING : 启动服务 START_PENDING --> RUNNING : 启动完成 RUNNING --> STOP_PENDING : 停止服务 STOP_PENDING --> STOPPED : 停止完成 RUNNING --> PAUSE_PENDING : 暂停服务 PAUSE_PENDING --> PAUSED : 暂停完成 PAUSED --> CONTINUE_PENDING : 恢复服务 CONTINUE_PENDING --> RUNNING : 恢复完成
Redis 服务管理工具 新建 redis_service_manager.bat,建议放在与 redis-server.exe 同一目录下。例如:
1 2 3 4 5 6 D:\Redis\ ├─ redis-server.exe ├─ redis-cli.exe ├─ redis.windows.conf ├─ ………… └─ redis_service_manager.bat
redis.windows.conf:配置文件
redis-cli:是redis提供的命令行客户端
redis-server:是redis的服务端启动脚本
可以使用 vscode 保存为 GBK 格式。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 @echo off title Redis 服务管理工具 color 0A chcp 936 >nul :: ============================================= :: Redis Windows 一键管理脚本 :: 适用版本: https://github.com/tporadowski/redis :: ============================================= setlocal ENABLEDELAYEDEXPANSION set "REDIS_DIR=%~dp0" set "REDIS_EXE=%REDIS_DIR%redis-server.exe" set "REDIS_CLI=%REDIS_DIR%redis-cli.exe" set "REDIS_CONF=%REDIS_DIR%redis.windows.conf" set "SERVICE_NAME=Redis" :: ----------------------------- :CHECK_ENV if not exist "%REDIS_EXE%" ( echo 未找到 redis-server.exe,请将本脚本放在 Redis 程序目录下! pause exit /b ) if not exist "%REDIS_CONF%" ( echo 未找到 redis.windows.conf,将使用默认配置启动! ) goto MENU :: ----------------------------- :MENU cls echo .echo ===============================echo Redis 服务管理工具echo ===============================echo [1] 启动 Redis 服务echo [2] 停止 Redis 服务echo [3] 重启 Redis 服务echo [4] 设置 Redis 开机自启echo [5] 查看 Redis 服务状态echo [6] 启动 redis-cli 客户端echo [7] 一键检测服务运行状态echo [0] 退出echo ===============================set /p choice=请输入选项 [0-7]: if "%choice%" =="1" goto STARTif "%choice%" =="2" goto STOPif "%choice%" =="3" goto RESTARTif "%choice%" =="4" goto AUTO_STARTif "%choice%" =="5" goto STATUSif "%choice%" =="6" goto CLIif "%choice%" =="7" goto CHECK_RUNNINGif "%choice%" =="0" goto ENDecho .echo 选项无效,请重新输入。pause goto MENU :: ----------------------------- :START echo .echo 正在启动 Redis 服务..."%REDIS_EXE%" --service-startif %errorlevel%==0 ( echo Redis 已成功启动! timeout /t 2 >nul echo . echo 自动测试连接 Redis... "%REDIS_CLI%" ping echo (如果返回 PONG,则说明运行正常) ) else ( echo 启动失败,请确认是否已安装 Redis 服务。 ) pause goto MENU :: ----------------------------- :STOP echo .echo 正在停止 Redis 服务..."%REDIS_EXE%" --service-stopif %errorlevel%==0 ( echo Redis 服务已停止。 ) else ( echo 停止失败,请确认服务是否正在运行。 ) pause goto MENU :: ----------------------------- :RESTART echo .echo 正在重启 Redis 服务..."%REDIS_EXE%" --service-stop >nul 2>&1timeout /t 2 >nul"%REDIS_EXE%" --service-startif %errorlevel%==0 ( echo Redis 已成功重启! timeout /t 2 >nul echo . echo 测试 Redis 连接... "%REDIS_CLI%" ping echo (如果返回 PONG,则说明运行正常) ) else ( echo 重启失败,请确认服务是否已安装或配置正确。 ) pause goto MENU :: ----------------------------- :AUTO_START echo .echo 设置 Redis 为开机自启...sc config %SERVICE_NAME% start= auto >nul 2>&1 if %errorlevel%==0 ( echo 设置成功,Redis 将在系统启动时自动运行。 ) else ( echo 设置失败,请确认服务是否存在。 ) pause goto MENU :: ----------------------------- :STATUS echo .echo 当前 Redis 服务状态:sc query %SERVICE_NAME% pause goto MENU :: ----------------------------- :CLI echo .if exist "%REDIS_CLI%" ( echo 启动 redis-cli 客户端... "%REDIS_CLI%" ) else ( echo 未找到 redis-cli.exe,请确认文件是否存在。 ) goto MENU :: ----------------------------- :CHECK_RUNNING echo .echo 检测 Redis 服务运行状态...for /f "tokens=3 delims=: " %%A in ('sc query %SERVICE_NAME% ^| find "STATE"' ) do set STATUS=%%Aif /I "!STATUS!" =="RUNNING" ( echo Redis 服务正在运行。 "%REDIS_CLI%" ping | find "PONG" >nul if %errorlevel%==0 ( echo Redis 响应正常。 ) else ( echo Redis 无响应,请检查配置。 ) ) else ( echo Redis 服务未运行。 ) pause goto MENU :: ----------------------------- :END echo .echo 已退出 Redis 服务管理工具。exit /b
使用方法
直接点击运行 → 不行的话再 以管理员身份运行
输入数字即可操作:
1 2 1️⃣【启动】 2️⃣【停止】 3️⃣【重启】 4️⃣【自启】 5️⃣【状态】 6️⃣【cli】 7️⃣【检查】 0️⃣【退出】
这里放出部分截图: