前几天Redis官方发布了 Redis6.0.1 Stable
版本,本文详细介绍下Centos7安装配置Redis6.0.1的步骤。
先大致说一下Redis6.0之前版本的优缺点
优点:
缺点:
Redis6.0版本在原有的基础上引入了多线程I/O
,并且充分利用了多核CPU系统的性能;虽然支持了多线程I/O,但是这个多线程只是用来处理网络数据的读写
和协议解析
,执行命令仍然是单线程。新版本还增加了acl、cluster proxy等新功能,后续慢慢研究一下。
有关老版本和新版本的性能对比可以参考下边这篇文章,感觉写的不错。
Redis 6.0与老版性能对比评测
在编译redis6.0.1之前需要升级gcc的版本,默认情况yum安装的gcc版本是4.8.5,由于版本过低,在编译时会报如下错误(部分截取)。
In file included from server.h:63:0,
from server.c:30:
server.c:4373:30: 错误:‘struct redisServer’没有名为‘slaves’的成员
listLength(server.slaves));
^
adlist.h:57:25: 附注:in definition of macro ‘listLength’
#define listLength(l) ((l)->len)
^
server.c:4377:19: 错误:‘struct redisServer’没有名为‘repl_min_slaves_to_write’的成员
if (server.repl_min_slaves_to_write &&
^
server.c:4378:19: 错误:‘struct redisServer’没有名为‘repl_min_slaves_max_lag’的成员
server.repl_min_slaves_max_lag) {
^
server.c:4381:23: 错误:‘struct redisServer’没有名为‘repl_good_slaves_count’的成员
server.repl_good_slaves_count);
......
server.c: 在函数‘hasActiveChildProcess’中:
server.c:1476:1: 警告:在有返回值的函数中,控制流程到达函数尾 [-Wreturn-type]
}
^
server.c: 在函数‘allPersistenceDisabled’中:
server.c:1482:1: 警告:在有返回值的函数中,控制流程到达函数尾 [-Wreturn-type]
}
^
server.c: 在函数‘writeCommandsDeniedByDiskError’中:
server.c:3747:1: 警告:在有返回值的函数中,控制流程到达函数尾 [-Wreturn-type]
}
^
server.c: 在函数‘iAmMaster’中:
server.c:4914:1: 警告:在有返回值的函数中,控制流程到达函数尾 [-Wreturn-type]
}
^
make[1]: *** [server.o] 错误 1
make[1]: 离开目录“/application/redis-6.0.1/src”
make: *** [install] 错误 2
若不想编译安装gcc高版本,这里推荐一种yum安装的方式。
1、安装scl源
yum install centos-release-scl scl-utils-build
2、列出scl可用源
yum list all --enablerepo='centos-sclo-rh'
3、安装8版本的gcc、gcc-c++、gdb工具链(toolchian)
yum install -y devtoolset-8-toolchain
scl enable devtoolset-8 bash
gcc --version
1、获取压缩包
# 从官网或者github获取tar包
wget http://download.redis.io/releases/redis-6.0.1.tar.gz
2、解压并指定安装目录
tar -xf redis-6.0.1.tar.gz
cd redis-6.0.1.tar.gz
make PREFIX=/opt/redis-6.0.1/ install
3、make test(可不做)
# make无误后可以make test测试下
# 若报错 You need tcl 8.5 or newer in order to run the Redis test 升级一下tcl即可
wget http://downloads.sourceforge.net/tcl/tcl8.6.1-src.tar.gz
tar xzvf tcl8.6.1-src.tar.gz -C /usr/local/
cd /usr/local/tcl8.6.1/unix/
./configure && make && make install
[root@Mredis redis-6.0.1]# make test
......
\o/ All tests passed without errors!
Cleanup: may take some time... OK # 说明无误
make[1]: 离开目录“/application/redis-6.0.1/src”
4、生成配置文件
mkdir /opt/redis-6.0.1/conf/6379
cd /opt/redis-6.0.1/conf/6379
# 拷贝默认配置文件至6379实例目录下
cp /application/redis-6.0.1/redis.conf /opt/redis-6.0.1/conf/6379/
5、修改配置文件
大致跟老版本的一样,由于新版本添加了多线程的功能,所以还需要根据系统CPU核心数量去配置此参数。
# bind本地ip
bind 192.168.0.100
# 根据需求去修改端口
port 6379
# 以daemon方式运行
daemonize yes
# 日志文件
logfile "/opt/redis-6.0.1/conf/6379/logs/redis_6379.log"
# 数据保存目录
dir /opt/redis-6.0.1/conf/6379/data
# 内存最大使用量
maxmemory 512MB
# I/O线程数,官方建议配置系统核心数量的3/4,我这里是2核,所以最多配置2就可以了
# 可以通过 lscpu 命令去查看本地系统的CPU核心数
io-threads 2
# 默认情况下,如果不开启多线程读功能,那么多线程只能进行写操作,是否开启多线程读功能看需求
io-threads-do-reads yes
6、启动redis,并配置开机自启
# 启动
/opt/redis-6.0.1/bin/redis-server /opt/redis-6.0.1/conf/6379/redis.conf
# 配置开机自启
echo "/opt/redis-6.0.1/bin/redis-server /opt/redis-6.0.1/conf/6379/redis.conf" >> /etc/rc.local
可以通过配置环境变量
的方式使得redis相关的命令在全局生效。
[root@Mredis ~]# /opt/redis-6.0.1/bin/redis-cli -h 192.168.0.100 -p 6379
192.168.0.100:6379> KEYS *
(empty array)
192.168.0.100:6379> set a bbb
OK
192.168.0.100:6379> get a
"bbb"
192.168.0.100:6379>
参考文章
Centos8平台安装redis6.0.1
Centos 7 yum升级GCC 8版本
Redis命令大全