在windows下将redis注册为本地服务的两种(多种)方法

96
亭子青年
2018.01.11 23:29* 字数 946

简介

简单的通过控制台启动redis server非常简单,但是同时也带来一个问题,如果控制台关闭了之后怎么办?redis server也会一同被关闭,那么我们就需要让redis在后台运行,如果是linux,只需要修改redis的启动config文件中的daemonize参数即可,那么在windows下是不支持该参数的配置的,需要将redis server注册为windows服务,然后再start。下面分别介绍在windows下安装redis服务的2中方法。

方法1:通过redis的自带工具安装

  1. 进入redis安装目录
  2. shift+鼠标右键打开菜单,点击“在此处打开命令窗口”,成功打开cmd
  3. 安装redis服务:redis-server --service-install redis.windows.conf --service-name redis6379 --loglevel verbose
  4. 通过service-name启动redis服务:redis-server --service-start --service-name redis6379
  5. 通过service-name停止redis服务:redis-server --service-stop --service-name redis6379

方法2:通过windows的sc命令安装

首先介绍一下语法:(来源于网络)
sc [servername] command servicename [optionname= optionvalues]
注意optionname等号后面有一个空格,所有的optionname的等号后面都必须要有
【servername】: 可以使用双斜线,如\youserver,也可以是\192.168.1.124 来操作远程计算机。如果在本地计算机上操作就不用添加任何参数
【command】: config(改变服务的配置), create(创建一个服务,增加到注册表中),start(启动一个服务), stop(停止一个服务), delete(删除一个服务)
【servicename】:你给你注册的服务命的名
【optionname】:binpath(服务二进制文件的路径名,必须设置),其他参数省略

sc create servicename binpath= "&&&"(注册服务)
说明1:redis注册服务,这里需要注意的是,如果路径中存在空格,比如我实例的“63 79”中间包含空格,或者是路径中包含了特殊字符,需要增加转义符(注意我下面的红色字体):
说明2:不是所有的exe都可以注册成服务,如果不符合规范的可以注册成功,但是启动会失败
说明3:对于redis需要通过sc注册服务,需要加入参数“--service-run”
说明4:binpath的等号右边需要留一个空格,这个属于规范,必须要这样做,否则会导致失败

sc start “服务名”(启动服务)
sc stop "服务名"(停止服务)
sc delete “服务名” (删除服务)

实例:将路径中带有空格的redis-server.exe注册为windows的服务,然后启动,使用redis的客户端连接使用测试,最后停止并卸载

  1. 安装和启动:注意6379的3和7之间有个空格
# 安装redis命令
SC CREATE redis6379 binpath= "\"C:\redis64-3.0.501\63 79\redis-server.exe\" --service-run \"C:\redis64-3.0.501\63 79\redis.windows.conf\""
# 启动redis命令
SC start redis6379
使用sc安装并启动redis服务.png
  1. 启动redis客户端连接redis server测试


    redis-cli.exe 连接测试.png

    上图可见,安装启动成功

  2. 使用sc命令停止redis服务

sc stop redis6379
使用sc命令停止redis服务.png
  1. 使用sc命令删除redis服务
sc delete redis6379
使用sc命令删除redis服务.png

20180123 新增

其实在windows下将redis注册为本地服务并不只是有两种方法,他们分别是

  1. 通过redis工具管理服务(安装服务,启动服务,停止服务)
  2. 通过windows sc命令管理服务,sc属于偏向底层的命令
  3. 通过sc的上层封装工具管理服务,InstallUtil.exe;(这里只是抛出有这个方案,大家可以自行研究)
  4. 通过windows 提供的api管理服务

本次新增感谢我的同事的帮助(技术牛人)


end

redis