2019/03/20

Upgrade Redis 5.0.3 / 5.0.4 on CentOS 7


方法一


# Download Redis-5.0.3-1
wget http://rpms.remirepo.net/enterprise/7/remi/x86_64//redis-5.0.3-1.el7.remi.x86_64.rpm

# Install rpm
rpm -Uvh redis-5.0.3-1.el7.remi.x86_64.rpm

# Install Redis 5.0.3-1
yum --enablerepo=remi install -y redis




方法二

# Download Redis 5.0.4 source code
wget http://download.redis.io/releases/redis-5.0.4.tar.gz -P /usr/local/src/

cd /usr/local/src/

# Install tcl and tcl-devel
yum install -y tcl tcl-devel

# Install Devel tools
yum group install -y "Development Tools"

# Unzip
tar -xvf redis-5.0.4.tar.gz
cd redis-5.0.4

# Test
make test

# Compiler
make

# Add Group
groupadd redis

# Add redis user
useradd redis -g redis -s /sbin/nologin -m -d /var/lib/redis

# Edit config
vi redis.conf
dir /var/lib/redis
logfile /var/log/redis/redis.log


# Copy config to /etc
cp redis.conf /etc/redis.conf
cp sentinel.conf /etc/sentinel.conf
chown redis /etc/redis.conf
chown redis /etc/sentinel.conf

# Create Redis log and storage folder
mkdir /var/log/redis
chmod 750 /var/log/redis
touch /var/log/redis/redis.log
chown redis:redis -R /var/log/redis

mkdir /var/lib/redis
chmod 750 /var/lib/redis
chown redis:redis -R /var/lib/redis


# Add link to /usr/local/bin
ln -s /usr/local/src/redis-5.0.4/src/redis-benchmark /usr/local/bin/redis-benchmark
ln -s /usr/local/src/redis-5.0.4/src/redis-cli /usr/local/bin/redis-cli
ln -s /usr/local/src/redis-5.0.4/src/redis-check-aof /usr/local/bin/redis-check-aof
ln -s /usr/local/src/redis-5.0.4/src/redis-check-rdb /usr/local/bin/redis-check-rdb
ln -s /usr/local/src/redis-5.0.4/src/redis-sentinel /usr/local/bin/redis-sentinel
ln -s /usr/local/src/redis-5.0.4/src/redis-server /usr/local/bin/redis-server
ln -s /usr/local/src/redis-5.0.4/src/redis-trib.rb /usr/local/bin/redis-trib.rb



# Add Redis service
vi /usr/lib/systemd/system/redis.service

[Unit]
Description=Redis persistent key-value database
After=network.target


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


[Install]
WantedBy=multi-user.target


# Add Redis-Shutdown
vi /usr/libexec/redis-shutdown

#!/bin/bash
#
# Wrapper to close properly redis and sentinel
test x"$REDIS_DEBUG" != x && set -x
REDIS_CLI=/usr/local/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="/etc/$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


# Add permission to redis-shutdown
chmod 755 /usr/libexec/redis-shutdown

# Enable redis service
systemctl enable redis.service
systemctl start redis.service

參考資料:
https://centos.pkgs.org/7/remi-x86_64/redis-5.0.3-1.el7.remi.x86_64.rpm.html
https://redis.io/download