Linux下安装Redis及make安装问题

一、安装redis及出现错误

首先下载redis,官方下载地址页面:https://redis.io/download

我们这里选择稳定版6.0.1版本

redis下载

正常安装步骤如下:

yum install gcc
wget http://download.redis.io/releases/redis-6.0.5.tar.gz
tar -xvf redis-6.0.5.tar.gz
cd /usr/local/redis-6.0.5/
make PREFIX=/usr/local/redis install

这里报了如下错误

server.c:5117:168: 错误:‘struct redisServer’没有名为‘sentinel_mode’的成员
         serverLog(LL_WARNING, "Warning: no config file specified, using the default config. In order to specify a config file use %s /path/to/%s.conf", argv[0], server.sentinel_mode ? "sentinel" : "redis");
                                                                                                                                                                        ^
server.c:5122:11: 错误:‘struct redisServer’没有名为‘supervised’的成员
     server.supervised = redisIsSupervised(server.supervised_mode);
           ^
server.c:5122:49: 错误:‘struct redisServer’没有名为‘supervised_mode’的成员
     server.supervised = redisIsSupervised(server.supervised_mode);
                                                 ^
server.c:5123:28: 错误:‘struct redisServer’没有名为‘daemonize’的成员
     int background = server.daemonize && !server.supervised;
                            ^
server.c:5123:49: 错误:‘struct redisServer’没有名为‘supervised’的成员
     int background = server.daemonize && !server.supervised;
                                                 ^
server.c:5127:29: 错误:‘struct redisServer’没有名为‘pidfile’的成员
     if (background || server.pidfile) createPidFile();
                             ^
server.c:5132:16: 错误:‘struct redisServer’没有名为‘sentinel_mode’的成员
     if (!server.sentinel_mode) {
                ^
server.c:5142:19: 错误:‘struct redisServer’没有名为‘cluster_enabled’的成员
         if (server.cluster_enabled) {
                   ^
server.c:5150:19: 错误:‘struct redisServer’没有名为‘ipfd_count’的成员
         if (server.ipfd_count > 0 || server.tlsfd_count > 0)
                   ^
server.c:5150:44: 错误:‘struct redisServer’没有名为‘tlsfd_count’的成员
         if (server.ipfd_count > 0 || server.tlsfd_count > 0)
                                            ^
server.c:5152:19: 错误:‘struct redisServer’没有名为‘sofd’的成员
         if (server.sofd > 0)
                   ^
server.c:5153:94: 错误:‘struct redisServer’没有名为‘unixsocket’的成员
             serverLog(LL_NOTICE,"The server is now ready to accept connections at %s", server.unixsocket);
                                                                                              ^
server.c:5154:19: 错误:‘struct redisServer’没有名为‘supervised_mode’的成员
         if (server.supervised_mode == SUPERVISED_SYSTEMD) {
                   ^
server.c:5155:24: 错误:‘struct redisServer’没有名为‘masterhost’的成员
             if (!server.masterhost) {
                        ^
server.c:5168:15: 错误:‘struct redisServer’没有名为‘maxmemory’的成员
     if (server.maxmemory > 0 && server.maxmemory < 1024*1024) {
               ^
server.c:5168:39: 错误:‘struct redisServer’没有名为‘maxmemory’的成员
     if (server.maxmemory > 0 && server.maxmemory < 1024*1024) {
                                       ^
server.c:5169:176: 错误:‘struct redisServer’没有名为‘maxmemory’的成员
         serverLog(LL_WARNING,"WARNING: You specified a maxmemory value that is less than 1MB (current value is %llu bytes). Are you sure this is what you really want?", server.maxmemory);
                                                                                                                                                                                ^
server.c:5172:31: 错误:‘struct redisServer’没有名为‘server_cpulist’的成员
     redisSetCpuAffinity(server.server_cpulist);
                               ^
server.c: 在函数‘hasActiveChildProcess’中:
server.c:1476:1: 警告:在有返回值的函数中,控制流程到达函数尾 [-Wreturn-type]
 }
 ^
server.c: 在函数‘allPersistenceDisabled’中:
server.c:1482:1: 警告:在有返回值的函数中,控制流程到达函数尾 [-Wreturn-type]
 }
 ^
server.c: 在函数‘writeCommandsDeniedByDiskError’中:
server.c:3790:1: 警告:在有返回值的函数中,控制流程到达函数尾 [-Wreturn-type]
 }
 ^
server.c: 在函数‘iAmMaster’中:
server.c:4964:1: 警告:在有返回值的函数中,控制流程到达函数尾 [-Wreturn-type]
 }

解决办法:升级gcc版本

gcc -v                             # 查看gcc版本
yum -y install centos-release-scl  # 升级到9.1版本
yum -y install devtoolset-9-gcc devtoolset-9-gcc-c++ devtoolset-9-binutils
scl enable devtoolset-9 bash
以上为临时启用,如果要长期使用gcc 9.1的话:
echo "source /opt/rh/devtoolset-9/enable" >>/etc/profile

再执行编译:

make PREFIX=/usr/local/redis install



redis命令

redis-benchmark : 用于测试redis的性能。
redis-check-aof : 当aof备份文件被损坏,可通过该工具对aof文件进行修复,使用方式:redis-check-aof --fix 要修复的aof文件。
redis-check-rdb : 修复损坏的rdb备份文件。
redis-cli : redis客户端,用于连接服务端。
redis-server : redis服务器端,用于启动redis服务器。
redis-sentinel : 哨兵模式(实际使用较多) 在master-slave模式下(slave默认不支持写),当master出现异常时,自动在slave中选择一台作为master。

你可能感兴趣的:(Linux下安装Redis及make安装问题)