当前位置: 首页 > news >正文

04-Redis 启动与停止:服务管理全攻略(含命令行与图形化操作)

目录

  • 引言
  • 一、为什么要掌握 Redis 服务的正确启停方式?
  • 二、Windows 系统:两种启停方式详解(新手优先图形化)
    • 2.1 图形化操作:直观易懂,适合新手
      • (1)启动服务
      • (2)停止服务
      • (3)优缺点分析
    • 2.2 命令行操作:高效灵活,支持自定义配置
      • (1)启动服务
      • (2)停止服务
      • (3)关键注意事项
  • 三、macOS/Linux 系统:命令行启停与服务配置(生产环境首选)
    • 3.1 临时启停:当前会话有效,适合测试
      • (1)启动服务
      • (2)后台启动:生产环境常用
      • (3)停止服务
    • 3.2 开机自启配置:生产环境必备
      • (1)macOS 系统(Homebrew 安装)
      • (2)Linux 系统(以 CentOS 为例)
    • 3.3 服务状态检查:快速判断服务是否正常
  • 四、启停异常排查:3 类常见问题解决
    • 4.1 问题 1:启动提示 “端口 6379 已被占用”
    • 4.2 问题 2:执行 `SHUTDOWN` 后服务未关闭
    • 4.3 问题 3:重启后数据丢失
  • 五、总结:不同场景的启停方式选择建议

引言

安装 Redis 后,“正确启停服务” 是保障数据安全与系统稳定的关键一步。很多新手会犯 “直接关闭命令窗口强制停止”、“启动后端口冲突” 等错误,导致数据丢失或服务异常。本文将针对 Windows、macOS、Linux 三大系统,详细讲解 Redis 服务的图形化与命令行启停方法,同时拆解常见异常的排查思路,帮你彻底掌握 Redis 服务管理。

一、为什么要掌握 Redis 服务的正确启停方式?

新手对 Redis 服务管理的认知常存在两个误区:一是认为 “启动就是双击 exe 文件,停止就是关窗口”,二是忽视 “启停顺序与配置加载” 的关联性。但实际上,错误的启停方式会带来严重问题:

  • 强制停止(如关闭命令窗口):可能导致 Redis 来不及执行持久化,内存中的数据直接丢失;

  • 重复启动未关闭的服务:会因端口被占用(默认 6379)导致启动失败,提示 “bind: Address already in use”或直接闪退;

  • 未指定配置文件启动:服务会加载默认配置,此前修改的端口、密码等自定义设置全部失效。

因此,掌握 “按场景选启停方式 + 验证服务状态 + 异常排查” 的完整流程,是 Redis 学习与使用的核心基础。

二、Windows 系统:两种启停方式详解(新手优先图形化)

Windows 系统的 Redis 服务有两种运行模式 ——“系统服务模式”(开机自启,后台运行)和 “普通应用模式”(临时启动,窗口关闭即停止),对应两种启停方式。

2.1 图形化操作:直观易懂,适合新手

图形化操作无需记忆命令,通过系统界面即可完成服务管理,适合刚接触 Redis 的新手,主要针对 “系统服务模式” 的 Redis。

(1)启动服务

  1. 右键点击桌面 “此电脑”,选择 “管理”,进入 “计算机管理” 窗口;
  2. 在左侧导航栏依次展开 “服务和应用程序”→“服务”;
  3. 在右侧服务列表中,找到名称为 “Redis” 的服务(若安装时未修改服务名);
  4. 若 “状态” 列显示 “已停止”,右键点击 “Redis”,选择 “启动”;
  5. 等待 1-2 秒,“状态” 变为 “正在运行”,说明服务启动成功。
    在这里插入图片描述

打开“服务”列表的方式有很多,比如Win+R,在运行窗口直接输入services.msc,或者打开任务管理器→服务。

(2)停止服务

  1. 同样在 “服务” 列表中找到 “Redis” 服务;

  2. 若 “状态” 为 “正在运行”,右键点击,选择 “停止”;

  3. “状态” 变为 “已停止”,表示服务已关闭(此时可重新启动或修改配置)。

(3)优缺点分析

  • 优点:操作直观,无需记命令,适合验证服务是否正常运行;

  • 缺点:步骤较多,无法指定自定义配置文件启动,不适合批量管理多实例。

2.2 命令行操作:高效灵活,支持自定义配置

命令行操作支持 “普通应用模式” 和 “系统服务模式”,可指定配置文件启动,适合需要自定义设置(如修改端口、密码)或批量管理的场景。

(1)启动服务

根据运行模式不同,命令分为两种:

  • 普通应用模式(临时启动,窗口关闭即停止)

    1. 按下 Win+R,输入 cmd 打开命令提示符;

    2. 若已配置环境变量,直接执行命令(未配置则需先切换到 Redis 安装目录,如 cd D:\Program Files\Redis):

      # 不指定配置文件(加载默认配置 redis.windows.conf)
      redis-server.exe
      # 指定配置文件(推荐,如使用服务模式配置文件)
      redis-server.exe "D:\Program Files\Redis\redis.windows-service.conf"
      
    3. 若窗口显示 “Server started, Redis version x.x.xx” 且光标闪烁,说明启动成功(此窗口需保持打开,关闭则服务停止)。
      在这里插入图片描述

  • 系统服务模式(后台运行,开机自启)

    1. 以管理员身份打开命令提示符;

    2. 执行以下命令启动服务(无需保持窗口打开):

      # 启动 Redis 服务
      net start redis
      # 若服务名已修改(安装时自定义),需用修改后的名称,如 net start redis6380
      

(2)停止服务

同样分两种模式,强烈推荐用命令优雅停止,避免强制关闭

  • 普通应用模式

    1. 切换到启动服务的命令提示符窗口;

    2. 按下 Ctrl+C,在弹出的确认框中输入 Y,服务会自动执行持久化后关闭。

  • 系统服务模式

    1. 以管理员身份打开命令提示符;

    2. 执行以下命令(优雅停止,触发数据持久化):

      # 停止 Redis 服务
      net stop redis
      # 或通过 redis-cli 发送关闭命令(更推荐,适合远程或自定义端口)
      redis-cli -h 127.0.0.1 -p 6379 SHUTDOWN
      

(3)关键注意事项

  • 启动前必须检查服务状态:若 “服务” 列表中 Redis 已运行,直接双击 redis-server.exe 会因端口冲突闪退,需先停止服务;

  • 停止时优先用 SHUTDOWN 命令:该命令会让 Redis 先将内存数据写入磁盘(触发持久化),再关闭服务,避免数据丢失;

  • 自定义端口需指定 -p 参数:若修改过 Redis 端口(如 6380),启停命令需加 -p 6380,例:redis-cli -p 6380 SHUTDOWN

三、macOS/Linux 系统:命令行启停与服务配置(生产环境首选)

macOS 和 Linux 系统以命令行为主,支持 “临时启停” 和 “开机自启”,且操作逻辑基本一致(仅服务管理命令略有差异),适合开发与生产环境。

3.1 临时启停:当前会话有效,适合测试

临时启停仅在当前终端会话中生效,终端关闭或服务器重启后,服务会停止,适合开发测试场景。

(1)启动服务

  1. 打开终端,执行以下命令:

    # 不指定配置文件(加载默认配置,通常在 /etc/redis.conf 或 /usr/local/etc/redis.conf)
    redis-server
    # 指定自定义配置文件(推荐,如修改过端口、密码)
    redis-server /etc/redis/redis-6380.conf
    
  2. 若终端显示 “Ready to accept connections”,说明启动成功(前台启动需保持终端打开,关闭则服务停止)。

(2)后台启动:生产环境常用

前台启动占用终端,生产环境需后台运行,需先修改配置文件:

  1. 打开 Redis 配置文件(如 /etc/redis.conf),找到 daemonize no,改为 daemonize yes(允许后台运行);

  2. 执行后台启动命令:

    redis-server /etc/redis.conf
    
  3. 验证后台启动:执行 ps -ef | grep redis,若显示 redis-server *:6379,说明服务已在后台运行。

(3)停止服务

禁止用 kill -9 强制杀死进程(会导致数据丢失),推荐以下两种优雅停止方式:

  • 方式一:通过 redis-cli 发送关闭命令(推荐,支持远程和自定义端口):

    # 本地默认端口(6379)
    redis-cli SHUTDOWN
    # 自定义端口(如 6380)
    redis-cli -p 6380 SHUTDOWN
    # 远程服务(如 192.168.1.100:6379,需密码)
    redis-cli -h 192.168.1.100 -p 6379 -a 123456 SHUTDOWN
    
  • 方式二:通过 kill 发送正常终止信号(需先查进程 ID):

    # 查找 Redis 进程 ID
    ps -ef | grep redis  # 输出类似:5123 1 0 10:00 ? 00:00:01 redis-server
    # 发送终止信号(进程 ID 为 5123)
    kill 5123
    

3.2 开机自启配置:生产环境必备

生产环境需要 Redis 随服务器开机自动启动,避免重启后手动操作,macOS 和 Linux 配置方式略有不同。

(1)macOS 系统(Homebrew 安装)

若通过 Homebrew 安装 Redis,可直接用 Homebrew 管理开机自启:

# 开启开机自启
brew services start redis
# 关闭开机自启
brew services stop redis
# 查看服务状态(是否自启、运行中)
brew services list

执行 brew services start redis 后,Redis 会以服务形式后台运行,重启电脑后自动启动。

(2)Linux 系统(以 CentOS 为例)

Linux 主要通过 systemd(主流)或 rc.local 配置开机自启,这里以 systemd 为例:

  1. 创建 Redis 服务文件:

    sudo vi /usr/lib/systemd/system/redis.service
    
  2. 粘贴以下内容(需根据实际安装路径修改 ExecStartExecStop 路径):

    [Unit]
    Description=Redis Server
    After=network.target[Service]
    Type=forking
    # 启动命令(指定配置文件,确保 daemonize yes)
    ExecStart=/usr/local/bin/redis-server /etc/redis.conf
    # 停止命令
    ExecStop=/usr/local/bin/redis-cli SHUTDOWN
    # 重启命令
    ExecReload=/bin/kill -HUP $MAINPID
    User=root
    Group=root
    Restart=always[Install]
    WantedBy=multi-user.target
    
  3. 刷新服务配置并设置开机自启:

    # 刷新配置
    sudo systemctl daemon-reload
    # 开启开机自启
    sudo systemctl enable redis
    # 启动服务
    sudo systemctl start redis
    # 查看状态(验证是否自启成功)
    sudo systemctl status redis
    

执行 sudo systemctl enable redis 后,服务器重启时 Redis 会自动启动。

3.3 服务状态检查:快速判断服务是否正常

无论哪种系统,都需要学会检查服务状态,避免 “以为启动成功实则失败” 的情况:

  • Windows:在 “服务” 列表查看 Redis 状态,或执行 sc query redis(命令提示符);

  • macOS:brew services list | grep redis(Homebrew 安装)或 ps -ef | grep redis

  • Linux:sudo systemctl status redis(systemd 系统)或 ps -ef | grep redis

四、启停异常排查:3 类常见问题解决

即使掌握了步骤,也可能因端口冲突、配置错误等导致启停失败,以下是 3 类高频问题的排查与解决方法。

4.1 问题 1:启动提示 “端口 6379 已被占用”

现象:启动时终端 / 窗口提示 “bind: Address already in use”(Linux/macOS)或 “创建服务器 TCP 监听套接字 127.0.0.1:6379: 绑定失败”(Windows)。
原因:该端口已被其他 Redis 实例或服务占用。
解决方案

  1. 查找占用端口的进程:

    • Windows:netstat -ano | findstr 6379(最后一列数字为进程 ID);

    • Linux/macOS:netstat -tuln | grep 6379lsof -i:6379

  2. 结束占用进程:

    • Windows:任务管理器→详细信息→找到对应进程 ID→结束任务;

    • Linux/macOS:sudo kill -9 进程ID(若为 Redis 进程,优先用 redis-cli SHUTDOWN)。

  3. 若需保留占用进程,可修改 Redis 端口(参考 “Redis 基础配置” 文章),用新端口启动。

4.2 问题 2:执行 SHUTDOWN 后服务未关闭

现象:执行 redis-cli SHUTDOWN 后,用 ps 或 “服务” 列表查看,Redis 仍在运行。
原因:权限不足(如非 root 用户执行)或 Redis 进程无响应。
解决方案

  • 提升权限:Linux/macOS 加 sudo,例:sudo redis-cli SHUTDOWN

  • 强制终止(万不得已):先查进程 ID(ps -ef | grep redis),再执行 sudo kill -9 进程ID(注意:此方式可能导致数据丢失,需事后检查持久化文件)。

4.3 问题 3:重启后数据丢失

现象:服务重启后,之前存储的 key 消失(如 GET name 返回 nil)。
原因:未开启持久化,或停止时未触发持久化,内存数据未写入磁盘。
解决方案

  1. 开启持久化(参考后续 “Redis 基础配置” 文章):至少开启 RDB(默认开启)或 AOF;

  2. 停止服务前手动触发持久化:执行 redis-cli SAVE(RDB)或等待 AOF 自动写入(默认每秒一次),再执行 SHUTDOWN

  3. 验证持久化文件:检查 Redis 安装目录下是否生成 dump.rdb(RDB)或 appendonly.aof(AOF),重启时会加载这两个文件恢复数据。

五、总结:不同场景的启停方式选择建议

掌握 Redis 服务管理的核心是 “按场景选对方式”,这里给出明确的选择建议:

  • 新手 / Windows 本地学习:优先用图形化操作(“服务” 列表)启停,简单不易出错;

  • 开发测试 / 临时验证:用命令行临时启动(redis-server),测试完成后用 SHUTDOWN 停止;

  • 生产环境 / Linux/macOS:配置开机自启(systemd/Homebrew services),日常用 systemctlbrew services 管理,停止必须用 SHUTDOWN 命令;

  • 多实例管理:为每个实例指定不同端口和配置文件,启停时通过 -p 或配置文件区分(如 redis-cli -p 6380 SHUTDOWN)。

服务管理是 Redis 稳定运行的 “基石”,正确的启停习惯能避免 80% 的数据丢失与服务异常问题。


文章转载自:

http://3ee4SBHN.kpsrc.cn
http://5pQ3HyCH.kpsrc.cn
http://Kxfk8BQl.kpsrc.cn
http://pw6MXkgF.kpsrc.cn
http://YisksDW4.kpsrc.cn
http://FYsNYlDk.kpsrc.cn
http://0Gu0c0ll.kpsrc.cn
http://oiq5AAsw.kpsrc.cn
http://YQMdI2GP.kpsrc.cn
http://5i6TxV60.kpsrc.cn
http://A3TGRBav.kpsrc.cn
http://4fXWysGC.kpsrc.cn
http://bIV5CHg3.kpsrc.cn
http://AOaC5T0S.kpsrc.cn
http://uobEBCEx.kpsrc.cn
http://sDJSVoiH.kpsrc.cn
http://6LlhliA7.kpsrc.cn
http://bhM3H6TF.kpsrc.cn
http://gXqpJRoK.kpsrc.cn
http://jHUwZDtA.kpsrc.cn
http://Jq6shx1J.kpsrc.cn
http://SsZw8q8c.kpsrc.cn
http://HSj4JThw.kpsrc.cn
http://AZ8DlQ2c.kpsrc.cn
http://mzzfBk28.kpsrc.cn
http://egnbXVZ0.kpsrc.cn
http://2WuX7rPa.kpsrc.cn
http://ONWdk1JR.kpsrc.cn
http://zg4bz12w.kpsrc.cn
http://bEaBUTaA.kpsrc.cn
http://www.dtcms.com/a/373850.html

相关文章:

  • LangChain: Agent(代理)
  • 使用 BatchRendererGroup 创建渲染器
  • flutter鸿蒙:使用flutter_local_notifications实现本地通知
  • Redis中数据类型详解
  • CentOS 7安装最新nginx
  • 解决Win11 安全中心删掉存在隐患的工具
  • 二级缓存在实际项目中的应用
  • 第14篇:循环神经网络(RNN)与LSTM:序列建模的利器
  • 【P02_AI大模型之调用LLM的方式】
  • 浅谈Go 语言开发 AI Agent
  • pgsql for循环一个 数据文本 修改数据 文本如下 ‘40210178‘, ‘40210175‘, ‘40210227‘, ‘40210204‘
  • 工业检测机器视觉为啥非用工业相机?普通相机差在哪?
  • 基于MATLAB的粒子群算法优化广义回归神经网络的实现
  • 25年9月通信基础知识补充1:NTN-TDL信道建模matlab代码(satellite-communications toolbox学习)
  • Aider AI Coding项目 流式处理架构深度分析
  • 打通各大芯片厂商相互间的壁垒,省去繁琐重复的适配流程的智慧工业开源了
  • PAT 1103 Integer Factorization
  • WindowManagerService (WMS)
  • Tool | AI类网址收录
  • SU-03T语音模块的使用
  • kubernetes-lxcfs解决资源可见性问题
  • 235kw发动机飞轮设计说明书CAD+设计说明书
  • Day9 | 类、对象与封装全解析
  • 【財運到】股票期货盯盘助手V3-盯盘界面找不到了
  • “微服务“一词总是出现,它是什么?
  • 打包应用:使用 Electron Forge
  • 详解布隆过滤器
  • ArcGIS学习-16 实战-栅格数据可达性分析
  • MySQL全库检索关键词 - idea 工具 Full-Text Search分享
  • Android小工具:使用python生成适配不同分辨率的dimen文件