导游
- 前言
- 更新GCC
- 下载安装Redis
- 系统环境优化
- 1.修改文件最大打开数
- 2&3修改/etc/sysctl.conf文件
- 4.关闭透明巨页
- 启动Redis
- 登录测试
- Redis环境优化
- 关闭Redis
前言 此篇安装Redis适用于企业,对于安装环境进行了优化,使Redis能够发挥更好的性能。
更新GCC 系统版本CentOS7.7
cat /etc/redhat-release
CentOS Linux release 7.7.1908 (Core)
GCC版本4.8.5
gcc --version
gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-39)
Copyright ? 2015 Free Software Foundation, Inc.
本程序是自由软件;请参看源代码的版权声明。本软件没有任何担保;
包括没有适销性和某一专用目的下的适用性担保。
其中GCC版本为4.8.5版本,而安装Redis6.0需要GCC5.0版本以上,若GCC版本不足,则会造成编译Redis报错。
注:使用网络yum源,默认网络源即可
通过scl软件集升级GCC
1)安装scl源
yum install centos-release-scl scl-utils-build -y
2)安装8版本的gcc、gcc-c++、gdb工具链(toolchian)
yum install -y devtoolset-8-toolchain
3)这个时候,GCC的版本还没有更改,刷新一下环境,使其生效。
scl enable devtoolset-8 bash
4)查看gcc版本
gcc --version
gcc (GCC) 8.3.1 20190311 (Red Hat 8.3.1-3)
Copyright (C) 2018 Free Software Foundation, Inc.
This is free software;
see the source for copying conditions.There is NO
warranty;
not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
现在gcc版本已经更新到了8.3.1
下载安装Redis 网址:http://download.redis.io/releases/
文章图片
根据需求,下载指定版本的Redis,网站中包含Redis2.X到6.X。
注:本安装以redis-6.0.5.tar.gz为例。
文章图片
复制链接地址,然后通过wget下载
wget http://download.redis.io/releases/redis-6.0.5.tar.gz
解压,编译,安装
tar xf redis-6.0.5.tar.gz
cd redis-6.0.5/
make -j4
cd src/
make install PREFIX=/usr/local/redis-6.0.5
创建Redis配置文件存放目录,复制配置文件
mkdir /usr/local/redis-6.0.5/etc
cd ..
cp redis.conf /usr/local/redis-6.0.5/etc/
系统环境优化 通过脚本加载配置文件,启动Redis
/usr/local/redis-6.0.5/bin/redis-server /usr/local/redis-6.0.5/etc/redis.conf
接下来就会看到一些输出信息,如下
16364:C 10 Jun 2020 17:18:46.460 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo
16364:C 10 Jun 2020 17:18:46.460 # Redis version=6.0.5, bits=64, commit=00000000, modified=0, pid=16364, just started
16364:C 10 Jun 2020 17:18:46.460 # Configuration loaded
16364:M 10 Jun 2020 17:18:46.461 * Increased maximum number of open files to 10032 (it was originally set to 1024).
_._
_.-``__ ''-._
_.-```.`_.''-._Redis 6.0.5 (00000000/0) 64 bit
.-`` .-```.```\/_.,_ ''-._
(',.-`| `,)Running in standalone mode
|`-._`-...-` __...-.``-._|'` _.-'|Port: 6379
|`-._`._/_.-'|PID: 16364
`-._`-._`-./_.-'_.-'
|`-._`-._`-.__.-'_.-'_.-'|
|`-._`-.__.-'_.-'|http://redis.io
`-._`-._`-.__.-'_.-'_.-'
|`-._`-._`-.__.-'_.-'_.-'|
|`-._`-.__.-'_.-'|
`-._`-._`-.__.-'_.-'_.-'
`-._`-.__.-'_.-'
`-.__.-'
`-.__.-'16364:M 10 Jun 2020 17:18:46.461 # WARNING: The TCP backlog setting of 511 cannot be enforced because /proc/sys/net/core/somaxconn is set to the lower value of 128.
16364:M 10 Jun 2020 17:18:46.461 # Server initialized
16364:M 10 Jun 2020 17:18:46.461 # WARNING 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.
16364:M 10 Jun 2020 17:18:46.461 # 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.
16364:M 10 Jun 2020 17:18:46.461 * Ready to accept connections
通过翻译可得知,系统环境需要进行优化:
1)将最大打开文件数增加到10032(原设置为1024)。
2)/proc/sys/net/core/somaxconn被设置为较低的值128,建议设置为511。
3)警告overcommit_memory被设置为0!在内存不足的情况下,后台保存可能会失败。要解决这个问题,添加’vm。overcommit_memory = 1’到/etc/sysctl.conf,然后重新启动或运行命令’sysctl vm。overcommit_memory=1’使其生效。
4)警告您的内核启用了透明巨页(THP)支持。这将造成延时和内存使用问题与Redis。要解决这个问题,运行命令’echo never > /sys/kernel/mm/transparent_hugepage/enabled’作为根用户,并把它添加到你的/etc/rc.local,以便在重新启动后保留该设置。Redis必须重新启动后,THP是禁用的。
我们来依次进行优化,按照提示执行相应的操作。
1.修改文件最大打开数
通过ulimit -n查看系统最大打开数
ulimit -n
1024
修改limits.conf文件,在最后添加两行配置项项
vim /etc/security/limits.conf
*softnofile10032
*hardnofile10032
修改/etc/pam.d/login,在最后添加一行配置项
sessionrequired/usr/lib64/security/pam_limits.so
用户登出,重新登录生效
logout #登出
重新登录后,查看文件最大打开数
ulimit -n
10032
2&3修改/etc/sysctl.conf文件
修改/etc/sysctl.conf 文件,并在最后添加两行配置项
vim /etc/sysctl.conf
net.core.somaxconn = 511
vm.overcommit_memory = 1
【企业级Redis安装部署(非常详细,更适合学习使用)】执行sysctl -p,使其配置项立即生效,否则需要重启
sysctl -p
net.core.somaxconn = 511
vm.overcommit_memory = 1
4.关闭透明巨页
直接按照提示执行命令即可,根据提示:运行命令’echo never > /sys/kernel/mm/transparent_hugepage/enabled’。
echo never > /sys/kernel/mm/transparent_hugepage/enabled
启动Redis 再次通过脚本加载配置文件启动Redis。
/usr/local/redis-6.0.5/bin/redis-server /usr/local/redis-6.0.5/etc/redis.conf
通过翻译可得知,已没有任何注意事项
16806:C 10 Jun 2020 17:37:46.045 # oO0OoO0OoO0Oo Redis is starting oO0OoO0Oo0Oo
16806:C 10 Jun 2020 17:37:46.045 # Redis version=6.0.5, bits=64, commit=0000000, modified=0, pid=16806, just started
16806:C 10 Jun 2020 17:37:46.045 # Configuration loaded
_._
_.-``__ ''-._
_.-```.`_.''-._Redis 6.0.5 (00000000/0) 64 bit
.-`` .-```.```\/_.,_ ''-._
(',.-`| `,)Running in standalone mode
|`-._`-...-` __...-.``-._|'` _.-'|Port: 6379
|`-._`._/_.-'|PID: 16806
`-._`-._`-./_.-'_.-'
|`-._`-._`-.__.-'_.-'_.-'|
|`-._`-.__.-'_.-'|http://redis.io
`-._`-._`-.__.-'_.-'_.-'
|`-._`-._`-.__.-'_.-'_.-'|
|`-._`-.__.-'_.-'|
`-._`-._`-.__.-'_.-'_.-'
`-._`-.__.-'_.-'
`-.__.-'
`-.__.-'16806:M 10 Jun 2020 17:37:46.046 # Server initialized
16806:M 10 Jun 2020 17:37:46.047 * Loading RDB produced by version 6.0.5
16806:M 10 Jun 2020 17:37:46.047 * RDB age 893 seconds
16806:M 10 Jun 2020 17:37:46.047 * RDB memory usage when created 0.77 Mb
16806:M 10 Jun 2020 17:37:46.047 * DB loaded from disk: 0.000 seconds
16806:M 10 Jun 2020 17:37:46.047 * Ready to accept connections
Redis默认是前台运行,也就是会占用前台bash,导致我们无法在当前命令行执行其他操作。通过修改配置文件或在执行命令后加&即可转为后台运行,建议修改配置文件。
对于初安装的配置文件,添加以下配置项即可,后续可以根据需求自行设置。
vim /usr/local/redis-6.0.5/etc/redis.conf
bind 127.0.0.1 192.168.254.130 #主机ip
daemonize yes #是否作为守护进程进行
port 6379#服务端口
logfile "/usr/local/redis-6.0.5/log/redis.log" #Redis日志文件路径
dir /data/redis#redis数据存放路径
创建文件与目录,用于存放日志与数据
mkdir -p /data/redis
mkdir /usr/local/redis-6.0.5/log
touch /usr/local/redis-6.0.5/log/redis.log
启动redis
/usr/local/redis-6.0.5/bin/redis-server /usr/local/redis-6.0.5/etc/redis.conf
查看Redis的端口号是否开启
netstat -anput | grep redis
tcp00 192.168.254.132:63790.0.0.0:*LISTEN17080/redis-server
tcp00 127.0.0.1:63790.0.0.0:*LISTEN17080/redis-server
查看Redis进程是否存在
ps -ef |grep redis | grep -v grep
root1708010 17:48 ?00:00:00 /usr/local/redis-6.0.5/bin/redis-server 127.0.0.1:6379
登录测试 通过Redis安装的bin/目录下的redis-cli 客户端,可直接登录Redis。
/usr/local/redis-6.0.5/bin/redis-cli
127.0.0.1:6379>
127.0.0.1:6379> exit
不指定IP地址,默认是以本机地址登录,可以通过-h选项,加上主机IP登录Redis。
/usr/local/redis-6.0.5/bin/redis-cli -h 192.168.254.132
192.168.254.132:6379>
192.168.254.132:6379> exit
Redis环境优化 关于Redis的bin目录下的几个工具
ls /usr/local/redis-6.0.5/bin/
redis-benchmarkredis-check-rdbredis-sentinel
redis-check-aofredis-cliredis-server
文件 | 说明 |
---|---|
redis-benchmark | Redis基准/性能测试工具 |
redis-check-aof | Redis Append Only Files(AOF)检查工具 |
redis-check-rdb | Redis RDB检查工具 |
redis-cli | Redis命令行工具 |
redis-sentinel | redis-server的软链接 |
redis-server | redis服务端 |
ln -s /usr/local/redis-6.0.5/bin/* /usr/local/bin/
最后添加开机自启
chmod +x /etc/rc.d/rc.local
echo " /usr/local/redis/bin/redis-server /usr/local/redis/etc/redis.conf" >> /etc/rc.d/rc.local
关闭Redis 关闭Redis的两种方法:通过Redis客户端关闭,杀死进程关闭(不推荐)。
方式1:通过Redis客户端关闭
redis-cli shutdown
netstat -anput | grep redis
方式2:强制杀死Redis进程
pkill redis-server
netstat -anput | grep redis