Centos7 源码安装 Redis 5.0
下载源码
浏览器打开 https://redis.io/download 在 Other versions 下面找到 5.0 的版本,这里一般只提供一个最新的稳定版。右键 》 复制链接地址。
我这里复制到的是 https://download.redis.io/releases/redis-5.0.10.tar.gz
mkdir -p /root/downloads
cd /root/downloads
wget https://download.redis.io/releases/redis-5.0.10.tar.gz
卸载 yum 安装的 Redis(如果之前用 yum 安装过的话)
# 先停止服务
systemctl stop redis
# 卸载
yum remove redis
编译安装
cd /root/downloads
# 解压
tar -zxvf redis-5.0.10.tar.gz
cd redis-5.0.10
# 编译,需要点时间
make
# 编译完成后安装到 /usr/local/redis
make PREFIX=/usr/local/redis install
# 创建到快捷方式
ln -s /usr/local/redis/bin/redis-server /usr/bin/
ln -s /usr/local/redis/bin/redis-cli /usr/bin/
配置
# 将配置文件放到 /etc/redis.conf
cp /root/downloads/redis-5.0.10/redis.conf /etc/redis.conf
# 进入编辑模式
vi /etc/redis.conf
bind 127.0.0.1 192.168.0.128 #监听ip,多个ip用空格分隔
daemonize yes #允许后台启动
logfile /var/log/redis/redis.log #日志路径
dir /data/redis/6379 #快照数据存储
requirepass 123456 #设置连接密码
# 创建目录
mkdir -p /var/log/redis
mkdir -p /data/redis/6379 # 存放快照 dump.rdb
# 更改权限
useradd redis
chown redis.redis /var/log/redis
chown redis.redis /data/redis/6379
启动配置
启动脚本
# 启动脚本
cat <<"EOF" > /usr/lib/systemd/system/redis.service
[Unit]
Description=Redis persistent key-value database
After=network.target
After=network-online.target
Wants=network-online.target
[Service]
ExecStart=/usr/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
EOF
关闭脚本
# 关闭脚本
cat <<"EOF" > /usr/libexec/redis-shutdown
#!/bin/bash
#
# Wrapper to close properly redis and sentinel
test x"$REDIS_DEBUG" != x && set -x
REDIS_CLI=/usr/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
EOF
测试
# 修改下关闭脚本的权限
chmod +x /usr/libexec/redis-shutdown
# 测试启动
systemctl start redis
# 测试重启,这里应该比较顺滑的重启好,如果等待超过 5 秒,肯定是有问题
systemctl restart redis
# 设置开机自启动
systemctl enable redis
单机器 Redis 服务多开
新增服务和端口
复制一份到 /etc/redis_6380.conf,并编辑
# 下面这些不能跟原有的打架
pidfile /var/run/redis_6380.pid
port 6380
logfile /var/log/redis/redis_6380.log
dir /data/redis/redis/6380
创建目录
mkdir -p /data/redis/redis/6380
chown redis.redis /data/redis/6380
设置新增的 Redis 开机自启
启动脚本
# 启动脚本
cat <<"EOF" > /usr/lib/systemd/system/redis_6380.service
[Unit]
Description=Redis persistent key-value database
After=network.target
After=network-online.target
Wants=network-online.target
[Service]
ExecStart=/usr/bin/redis-server /etc/redis_6380.conf --supervised systemd
ExecStop=/usr/libexec/redis_6380-shutdown
Type=notify
User=redis
Group=redis
RuntimeDirectory=redis
RuntimeDirectoryMode=0755
[Install]
WantedBy=multi-user.target
EOF
关闭脚本
# 关闭脚本
cat <<"EOF" > /usr/libexec/redis_6380-shutdown
#!/bin/bash
#
# Wrapper to close properly redis and sentinel
test x"$REDIS_DEBUG" != x && set -x
REDIS_CLI=/usr/bin/redis-cli
# Get the proper config file based on service name
CONFIG_FILE="/etc/redis_6380.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`
$REDIS_CLI -h $HOST -p $PORT -a $PASS shutdown
EOF
测试多开
# 修改下关闭脚本的权限
chmod +x /usr/libexec/redis_6380-shutdown
# 测试启动
systemctl start redis_6380
# 测试重启,这里应该比较顺滑的重启好,如果等待超过 5 秒,肯定是有问题
systemctl restart redis_6380
# 设置开机自启动
systemctl enable redis_6380
主从配置(有需要再配置)
主库在上面基础上修改配置 /etc/redis.conf
requirepass 123456 #设置master连接密码,slave可省略
从库在上面基础上修改配置 /etc/redis.conf
replicaof 192.168.30.128 6379 # 主库的 ip port
masterauth 123456 #slave连接master密码,master可省略
requirepass 123456 #设置master连接密码,slave可省略,但是建议跟主库一样的密码
全部重启后,查看状态
info replication