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
posted @ 2020-11-05 22:05  天明听歌  阅读(158)  评论(0编辑  收藏  举报