Redis创建启停服务以及设置开机自启动

时间:2021-07-15 06:35:37

在完成redis配置以及可以正常启停之后,我们需要将redis做成服务

1.在redis根目录中找到utils文件夹,找到里边的redis_init_script文件,这个文件就是redis给咱们做的服务demo,我们可以略作修改其中的配置:

#!/bin/sh
#
# Simple Redis init.d script conceived to work on Linux systems
# as it does use of the /proc filesystem.

REDISPORT=6379
EXEC=/usr/local/bin/redis-server
CLIEXEC=/usr/local/bin/redis-cli

PIDFILE=/var/run/redis_${REDISPORT}.pid
CONF="/etc/redis/${REDISPORT}.conf"

case "$1" in
    start)
        if [ -f $PIDFILE ]
        then
                echo "$PIDFILE exists, process is already running or crashed"
        else
                echo "Starting Redis server..."
                $EXEC $CONF
        fi
        ;;
    stop)
        if [ ! -f $PIDFILE ]
        then
                echo "$PIDFILE does not exist, process is not running"
        else
                PID=$(cat $PIDFILE)
                echo "Stopping ..."
                $CLIEXEC -p $REDISPORT shutdown
                while [ -x /proc/${PID} ]
                do
                    echo "Waiting for Redis to shutdown ..."
                    sleep 1
                done
                echo "Redis stopped"
        fi
        ;;
    *)
        echo "Please use start or stop as first argument"
        ;;
esac
如上图所示,这是redis自带的demo,但是有些配置需要我们重新进行配置:

#redis服务器监听的端口
REDISPORT=6379
#服务端所处位置,在make install后默认存放与`/usr/local/bin/redis-server`,如果未make install则需要修改该路径,下同。
EXEC=/usr/local/bin/redis-server
#客户端位置
CLIEXEC=/usr/local/bin/redis-cli
#Redis的PID文件位置,可以在redis.conf中的pidfile中指定目录
PIDFILE=/var/run/redis_${REDISPORT}.pid
#配置文件位置,需要修改
CONF="/etc/redis/redis.conf"
好了,更改完这些配置,可以进行保存了,将其保存重命名redis6379保存至/etc/init.d目录下,就可以使用命令进行启停了

service redis6379 start
service redis6379 stop
使用service redis6379 stop时,如果你的redis.conf中的bind参数不是设置127.0.0.1或者加了密码,那么此处会报连接失败的错误,那么我们就需要修改一下脚本:
#首先定位到此处
$CLIEXEC  -p $REDISPORT  shutdown  
然后我们需要对此行做一些修改:
#-h 为你的redis设置的ip,此处不加默认127.0.0.1
#-a 如果你设置了redis密码,此处需要加上,否则无法执行shutdown命令
$CLIEXEC -h $REDISHOST -p $REDISPORT -a $PASSWORD shutdown  
同时在脚本上方添加两个自定义参数:
REDISHOST=xxxx.xxxx.xxxx.xxxx  你的bind中所配置的ip地址
PASSWORD=********  你的redis密码
如果在启动时报env: /etc/init.d/redis: Permission denied这个错误,则需要执行如下命令:
chmod a+x /etc/init.d/redis6379 
那么现在可以正常启动停止服务了,接下来需要设置开机自启动:

此处直接配置开启自启动 chkconfig redisd on 将报错误: service redisd does not support chkconfig 
   在启动脚本开头添加如下两行注释以修改其运行级别:

#!/bin/sh
# chkconfig:   2345 90 10
# description:  Redis is a persistent key-value database
#
ok,设置完此项配置后,reboot一下试试吧!

有时候,我们也需要用到哨兵模式,所以我们可以在脚本的启动语句中增添对哨兵的启动

首先增加两个自定义参数:

 
SENCONF=/etc/redis/sentinel.conf  你的sentinel.conf所在地址
  SENEXEC=/usr/local/bin/redis-sentinel 
 
 

然后修改脚本

   

 
 
echo "Starting Redis server..."
  $EXEC $CONF
  echo "Redis already started!"
  #以下为新增
  $SENEXEC $SENCONF
  echo "Redis Sentinel already started!"

 
     好了,配置完成后你的哨兵可以在你启动redis主服务时也可以同时启动了