L
O
A
D
I
N
G

Redis安装与设置


Redis的下载与配置可以参考以下文章,写得十分清晰:

这里主要谈一谈其他一些补充说明。


和 Linux 的区别

在 Linux 上,Redis 可以通过:

1
daemonize yes

让自己在后台运行(即脱离终端、输出日志到文件)。

👉 Windows 版本的 Redis 不支持 daemonizesupervisedpidfile 这些选项

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 窗口连接客户端:

1
redis-cli.exe

两个窗口都要保持打开,一旦关闭服务器窗口,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 输入:

1
sc query Redis

或者在「任务管理器 → 服务」中查看 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 START
if "%choice%"=="2" goto STOP
if "%choice%"=="3" goto RESTART
if "%choice%"=="4" goto AUTO_START
if "%choice%"=="5" goto STATUS
if "%choice%"=="6" goto CLI
if "%choice%"=="7" goto CHECK_RUNNING
if "%choice%"=="0" goto END

echo.
echo 选项无效,请重新输入。
pause
goto MENU

:: -----------------------------
:START
echo.
echo 正在启动 Redis 服务...
"%REDIS_EXE%" --service-start
if %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-stop
if %errorlevel%==0 (
echo Redis 服务已停止。
) else (
echo 停止失败,请确认服务是否正在运行。
)
pause
goto MENU

:: -----------------------------
:RESTART
echo.
echo 正在重启 Redis 服务...
"%REDIS_EXE%" --service-stop >nul 2>&1
timeout /t 2 >nul
"%REDIS_EXE%" --service-start
if %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=%%A
if /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️⃣【退出】

这里放出部分截图:

功能1

功能6


文章作者: loyeh
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 loyeh !
评论
  目录