准备工作
系统:Centos7、Centos8
Redis版本:6.2.7
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的安装,若后续发现还有需要优化的地方,本文会继续添加。