设置redis开机启动的方法

1. 前言

Redis是一个开源的内存数据库,具有高性能、高可靠性、支持丰富的数据结构等特点,因此广受开发者欢迎。在Linux系统中,Redis默认不会随系统启动而启动,这就需要我们手动设置Redis开机启动。

2. 设置启动脚本

在Linux环境中,启动脚本一般都位于/etc/init.d目录下。因此,我们需要先将 Redis 的启动脚本拷贝到该目录下:

sudo wget https://raw.githubusercontent.com/antirez/redis/4.0/src/redis-server -O /etc/init.d/redis-server

接着,我们修改redis-server脚本的权限,使其具有可执行权限:

sudo chmod +x /etc/init.d/redis-server

2.1 修改redis-server脚本文件

虽然我们已经将 redis-server 脚本拷贝到了 /etc/init.d 目录下,但是 Redis 并不知道该如何启动或者停止。这就需要我们修改 /etc/init.d/redis-server 文件,指定一些必要的参数。具体操作如下:

用vi或者其他编辑器打开 /etc/init.d/redis-server 文件:

sudo vi /etc/init.d/redis-server

接着,将文件中的 REDISPORT 和 REDISCONFIG 常量值更改为 Redis 实例所使用的端口号和配置文件的路径,根据实际情况进行更改。这里假设 Redis 实例端口为 6379,配置文件位于 /etc/redis/redis.conf。我们需要将下列代码中的相应变量值进行更改:

REDISPORT=6379

REDISCONFIG="/etc/redis/redis.conf"

接下来,将文件中其他的注释部分和不需要的代码删去,最终修改后的代码如下:

#!/bin/sh

### BEGIN INIT INFO

# Provides: redis-server

# Required-Start: $syslog $remote_fs

# Required-Stop: $syslog $remote_fs

# Should-Start: $local_fs

# Should-Stop: $local_fs

# Default-Start: 2 3 4 5

# Default-Stop: 0 1 6

# Short-Description: redis-server - Persistent key-value db

# Description: redis-server - Persistent key-value db

### END INIT INFO

#

REDISPORT=6379

EXEC=/usr/local/bin/redis-server

REDIS_CLI=/usr/local/bin/redis-cli

PIDFILE=/var/run/redis_${REDISPORT}.pid

REDISCONFIG="/etc/redis/redis.conf"

#

case "$1" in

start)

if [ -f $PIDFILE ]

then

echo "$PIDFILE exists, process is already running or crashed"

else

echo "Starting Redis server..."

$EXEC $REDISCONFIG

fi

;;

stop)

if [ ! -f $PIDFILE ]

then

echo "$PIDFILE does not exist, process is not running"

else

PID=$(cat $PIDFILE)

echo "Stopping ..."

$REDIS_CLI -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

#

exit 0

3. 设置Redis服务为系统服务

如何将 Redis 服务添加到系统服务中呢?我们需要借助系统自带的 update-rc.d 命令。update-rc.d 命令类似于 chkconfig 命令,都是 服务开机自启 功能相关的命令。使用 update-rc.d 命令可以自动创建或者删除启动链接,以达到自启效果。

3.1 修改redis-server脚本文件

在修改 /etc/init.d/redis-server 文件之前,我们需要稍微调整一下脚本文件中的一些常量。具体来说,需要将其中的 PIDFILE 常量设置为正确的值:

PIDFILE=/var/run/redis_${REDISPORT}.pid

由于没有相应的目录,所以会报错,因此,我们需要新建目录:

sudo mkdir /var/run/redis

然后赋权给redis用户组:

sudo chown redis:redis /var/run/redis

3.2 设置redis-server为系统服务

设置Redis服务为系统服务:

sudo update-rc.d redis-server defaults

设置完成之后,系统会自动添加 redis-server 服务到启动项中,这样,当 Linux 系统启动时,Redis 服务也会同时启动。

4. 验证Redis开机自启是否成功

在启动 Redis 服务后,我们可以通过如下命令查看 Redis 的启动状态:

sudo service redis-server status

如果 Redis 启动正常,则会显示如下信息:

● redis-server.service - LSB: redis-server - Persistent key-value db

Loaded: loaded (/etc/init.d/redis-server; generated; vendor preset: enabled)

Active: active (running) since Mon 2019-12-23 19:09:59 CST; 33s ago

Docs: man:systemd-sysv-generator(8)

Process: 3076 ExecStart=/etc/init.d/redis-server start (code=exited, status=0/SUCCESS)

Tasks: 4 (limit: 4915)

Memory: 3.3M

CGroup: /system.slice/redis-server.service

└─3084 /usr/local/bin/redis-server *:6379

Dec 23 19:09:59 debian systemd[1]: Starting LSB:redis-server - Persistent key-value db...

Dec 23 19:09:59 debian redis-server[3076]: Starting Redis server...

Dec 23 19:09:59 debian redis-server[3076]: 3084:C 23 Dec 2019 19:09:59.942 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo

Dec 23 19:09:59 debian redis-server[3076]: 3084:C 23 Dec 2019 19:09:59.942 # Redis version=5.0.7, bits=64, commit=00000000, modified=0, pid=3084, just started

Dec 23 19:09:59 debian redis-server[3076]: 3084:C 23 Dec 2019 19:09:59.942 # Configuration loaded

Dec 23 19:09:59 debian systemd[1]: Started LSB:redis-server - Persistent key-value db.

至此,我们已经将 Redis 服务设置为系统服务,并启用了开机自启功能。在下次 Linux 系统重启之后,Redis 服务也将自动启动。

数据库标签