您的位置:

Redis开机启动的实现

一、研究Redis的安装路径

Redis是一款基于内存的缓存数据库,安装路径可以根据具体的环境有所不同。以Ubuntu系统为例,可以用以下命令查询:

which redis-server

该命令会输出Redis的安装路径,例如:

/usr/local/bin/redis-server

在实际设置开机启动时,需要用到该路径。

二、编写启动脚本

为了实现Redis开机启动,我们需要编写一个脚本,该脚本会在启动时自动运行并启动Redis服务。

对于Ubuntu系统,可以在/etc/init.d/目录下创建一个redis文件,然后将以下代码复制进去:

#!/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
        ;;
    restart|force-reload)
        ${0} stop
        ${0} start
        ;;
    *)
        echo "Usage: /etc/init.d/redis {start|stop|restart|force-reload}" >&2
        exit 1
        ;;
esac

exit 0

该脚本可以启动、停止以及重启Redis服务,以及对应的进程文件会存储在/var/run/redis_[port].pid中。

三、添加脚本到开机启动项

为了使Redis服务在开机时启动,需要将上一步中编写的启动脚本添加到开机启动项中。

以Ubuntu系统为例,可以使用以下命令添加:

sudo update-rc.d redis defaults

该命令会将/etc/init.d/redis文件添加到开机默认的启动项中,从而实现开机自动启动Redis服务。

四、检查Redis服务状态

在上述操作完成后,可以使用以下命令检查Redis服务是否正常运行:

sudo service redis status

该命令会输出Redis服务的状态信息,例如:

● redis.service - Redis In-Memory Data Store
   Loaded: loaded (/lib/systemd/system/redis.service; enabled; vendor preset: enabled)
   Active: active (running) since Mon 2019-06-10 16:57:31 CST; 5s ago
     Docs: http://redis.io/documentation,
           man:redis-server(1)
  Process: 11472 ExecStop=/usr/bin/redis-cli shutdown (code=exited, status=0/SUCCESS)
 Main PID: 11481 (redis-server)
    Tasks: 4
   Memory: 462.0K
      CPU: 31ms
   CGroup: /system.slice/redis.service
           └─11481 /usr/local/bin/redis-server 127.0.0.1:6379

如果输出的状态是active (running),则说明Redis服务正常运行。