linux安装redis5.0.7,并使用systemd管理redis服务

安装之前需要确认gcc版本,版本过低会导致下面编译报错
升级gcc

yum -y install centos-release-scl
yum -y install devtoolset-9-gcc devtoolset-9-gcc-c++ devtoolset-9-binutils
scl enable devtoolset-9 bash
echo "source /opt/rh/devtoolset-9/enable" >> /etc/profile

下载redis

官网👉https://redis.io/download
旧版本👉https://github.com/redis/redis/tags

上传、解压

[root@hadoop100 opt]# tar -zxvf redis-5.0.7.tar.gz

移动到/usr/local/redis

[root@hadoop100 opt]# mv redis-5.0.7 /usr/local/redis
[root@hadoop100 opt]# cd /usr/local/redis/

编译

[root@hadoop100 redis]# make

编译成功结果如下👇

Hint: It's a good idea to run 'make test' ;)

make[1]: Leaving directory `/usr/local/redis/src'

安装

[root@hadoop100 redis]# make PREFIX=/usr/local/redis install

修改配置文件

[root@hadoop100 redis]# vim redis.conf
# 允许其他机器访问
bind 0.0.0.0
# 使用systemd管理redis服务
supervised systemd
# 指定redis工作目录,需要提前创建
dir /opt/tmp/redis

使用systemd管理redis服务

1.创建redis.service文件
[Unit]
Description=Redis persistent key-value database
After=network.target
After=network-online.target
Wants=network-online.target

[Service]
ExecStart=/usr/local/redis/bin/redis-server /usr/local/redis/redis.conf --supervised systemd
ExecStop=/opt/redis-shutdown.sh
Type=notify
User=redis
Group=redis
RuntimeDirectory=redis
RuntimeDirectoryMode=0755

[Install]
WantedBy=multi-user.target

[Service]
LimitNOFILE=10240
2.创建redis所有者和所属组,并授予访问/opt/tmp/redis的权限
[root@hadoop100 tmp]# groupadd redis
[root@hadoop100 tmp]# useradd -r -g redis redis
[root@hadoop100 tmp]# chown -R redis:redis /opt/tmp/redis
3.创建redis-shutdown.sh文件
#!/bin/bash
#
# Wrapper to close properly redis and sentinel
test x"$REDIS_DEBUG" != x && set -x

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

# Retrieve service name
SERVICE_NAME="$1"
if [ -z "$SERVICE_NAME" ]; then
   SERVICE_NAME=redis
fi

# Get the proper config file based on service name
CONFIG_FILE="/usr/local/redis/$SERVICE_NAME.conf"

# Use awk to retrieve host, port from config file
HOST=`awk '/^[[:blank:]]*bind/ { print $2 }' $CONFIG_FILE | tail -n1`
PORT=`awk '/^[[:blank:]]*port/ { print $2 }' $CONFIG_FILE | tail -n1`
PASS=`awk '/^[[:blank:]]*requirepass/ { print $2 }' $CONFIG_FILE | tail -n1`
SOCK=`awk '/^[[:blank:]]*unixsocket\s/ { print $2 }' $CONFIG_FILE | tail -n1`

# Just in case, use default host, port
HOST=${HOST:-127.0.0.1}
if [ "$SERVICE_NAME" = redis ]; then
    PORT=${PORT:-6379}
else
    PORT=${PORT:-26739}
fi

# Setup additional parameters
# e.g password-protected redis instances
[ -z "$PASS"  ] || ADDITIONAL_PARAMS="-a $PASS"

# shutdown the service properly
if [ -e "$SOCK" ] ; then
	$REDIS_CLI -s $SOCK $ADDITIONAL_PARAMS shutdown
else
	$REDIS_CLI -h $HOST -p $PORT $ADDITIONAL_PARAMS shutdown
fi
4.软链接到/usr/lib/systemd/system
[root@hadoop100 opt]# ln -s /opt/redis.service /usr/lib/systemd/system/redis.service

每次修改完.service文件,都需要reload

[root@hadoop100 opt]# systemctl daemon-reload
5.systemd启动redis服务
[root@hadoop100 opt]# systemctl start redis
6.systemd其他相关命令
# 停止服务
[root@hadoop100 opt]# systemctl stop redis
# 查看运行状态
[root@hadoop100 opt]# systemctl status redis
# 查看运行日志
[root@hadoop100 opt]# journalctl -u redis -f
# 开机自启
[root@hadoop100 opt]# systemctl enable redis