Centos7&8单机部署Redis

时间:2022-7-7    作者:冰城心无泪    分类: Linux应用


准备工作

系统:Centos7、Centos8

Redis版本:6.2.7

建议:先换源,可以参考本网站CentOS7&8更换国内yum源

1、确认已安装下载工具wget及make test依赖tcl,编译工具make(Centos8最小化安装貌似不带),vim编辑器,若未安装,请运行下列命令安装

yum -y install wget tcl make vim

2、关闭selinux

sed -i 's/^SELINUX=.*/SELINUX=disabled/' /etc/selinux/config && setenforce 0

3、确认已安装编译环境gcc9(Centos7支持到GCC4.8.5,如果安装6版本的redis,gcc版本一定要5.3以上)

Centos7:

先安装软件集,作用是可以提供多个软件版本同时存在
    yum -y install centos-release-scl
安装gcc9(gcc4.8.5可安装也可不安装,因为编译Redis6用不到)
    yum -y install devtoolset-9-gcc devtoolset-9-gcc-c++ devtoolset-9-binutils

临时启用gcc9编译环境
    scl enable devtoolset-9 bash

永久使用gcc9编译环境
    echo "source /opt/rh/devtoolset-9/enable" >> /etc/profile && source /etc/profile

Centos8:

yum -y install gcc
 或者
dnf -y install gcc

4、创建redis安装目录,默认安装到 /usr/local/bin/,若安装到默认目录,此步骤可忽略

mkdir /redis

5、下载redis到home目录:

wget -P /home https://download.redis.io/releases/redis-6.2.7.tar.gz

6、解压下载的tar包,并进入解压后的目录

tar -xzvf /home/redis-6.2.7.tar.gz -C /home/ && cd /home/redis-6.2.7

7、编译并安装

指定目录命令
    make PREFIX=/redis install

安装到默认目录命令
    make && make install

8、安装完成后,可到安装目录查看,各文件说明

redis-benchmark  性能测试工具
redis-check-aof  修复有问题的aof文件
redis-check-rdb  修复有问题的rdb文件
redis-cli        redis客户端
redis-sentinel   集群管理工具
redis-server     redis服务启动工具

9、拷贝配置文件至/etc

cp /home/redis-6.2.7/redis.conf /etc/

10、根据需要修改配置文件

默认只允许本机127.0.0.1访问,注释掉使其允许其他IP访问
sed -i 's/^bind 127.0.0.1/# bind 127.0.0.1/' /etc/redis.conf

默认连接redis时只能通过本地localhost,改成NO,使其允许其他IP访问
sed -i 's/^protected-mode yes/protected-mode no/' /etc/redis.conf

redis默认不在后台运行,修改成yes变成守护进程后台运行
sed -i 's/^daemonize no/daemonize yes/' /etc/redis.conf

设置redis连接密码为redis123
sed -i 's/^# requirepass foobared/requirepass redis123/' /etc/redis.conf

设置持久化文件存放位置
sed -i 's#^dir ./#dir /redis#' /etc/redis.conf

更改默认连接端口为16379
sed -i 's/^port 6379/port 16379/' /etc/redis.conf

设置redis日志文件名称
sed -i 's#^logfile.*#logfile "/var/log/Redis.log"#' /etc/redis.conf

默认redis有16个库(0-15),根据需要可以设置更多
sed -i 's/^databases.*/databases 32/' /etc/redis.conf

11、创建系统服务文件,复制以下命令可直接创建,注意redis的安装位置及修改后的启动端口,根据需要修改

cat > /etc/systemd/system/redis.service << EOF
[Unit]
Description=Redis In-Memory Data Store
After=network.target

[Service]
Type=forking
ExecStart=/redis/bin/redis-server /etc/redis.conf
ExecStop=/redis/bin/redis-cli -p 16379 shutdown
PrivateTmp=true
Restart=always
LimitNOFILE=65535

[Install]
WantedBy=multi-user.target
EOF

12、重载系统服务文件并设置redis服务随机启动

systemctl daemon-reload && systemctl enable redis

13、启动redis服务并查看redis的服务状态,是否正常启动

systemctl start redis && tail -f /var/log/Redis.log

14报错处理

若在启动redis的时候出现报警"The TCP backlog setting of 511 cannot be enforced because /proc/sys/net/core/somaxconn is set to the lower value of 128"
停掉redis,输入下面命令后,再重启redis。

echo 'net.core.somaxconn= 1024' >> /etc/sysctl.conf && sysctl -p

若在启动redis的时候出现报警“overcommit_memory is set to 0! Background save may fail under low memory condition. 
To fix this issue add 'vm.overcommit_memory = 1' to /etc/sysctl.conf and then reboot or run the command 'sysctl vm.overcommit_memory=1' 
for this to take effect.”
停掉redis,输入下面命令后,再重启redis。

sysctl vm.overcommit_memory=1 && echo 'vm.overcommit_memory = 1' >> /etc/sysctl.conf && sysctl -p

若在启动redis的时候出现报警"WARNING you have Transparent Huge Pages (THP) support enabled in your kernel. This will create latency and memory usage     issues with Redis. To fix this issue run the command 'echo never > /sys/kernel/mm/transparent_hugepage/enabled' as root, 
and add it to your /etc/rc.local in order to retain the setting after a reboot. Redis must be restarted after THP is disabled"
停掉redis,输入下面两条命令后,再重启redis。

echo never > /sys/kernel/mm/transparent_hugepage/enabled
echo "echo never > /sys/kernel/mm/transparent_hugepage/enabled" >> /etc/rc.local && chmod +x /etc/rc.d/rc.local

15、上面我们修改了redis远程端口,所有还需要在防火墙上面开启此端口,允许通讯。

firewall-cmd --set-default-zone=public
firewall-cmd --zone=public --add-port=16379/tcp --permanent
systemctl restart firewalld

以上介绍了Redis的安装,若后续发现还有需要优化的地方,本文会继续添加。