一妄荔、安裝redis及出現(xiàn)錯誤
首先下載redis,官方下載地址頁面:https://redis.io/download
我們這里選擇穩(wěn)定版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: 在函數(shù)‘hasActiveChildProcess’中:
server.c:1476:1: 警告:在有返回值的函數(shù)中灶壶,控制流程到達函數(shù)尾 [-Wreturn-type]
}
^
server.c: 在函數(shù)‘allPersistenceDisabled’中:
server.c:1482:1: 警告:在有返回值的函數(shù)中钓瞭,控制流程到達函數(shù)尾 [-Wreturn-type]
}
^
server.c: 在函數(shù)‘writeCommandsDeniedByDiskError’中:
server.c:3790:1: 警告:在有返回值的函數(shù)中姆蘸,控制流程到達函數(shù)尾 [-Wreturn-type]
}
^
server.c: 在函數(shù)‘iAmMaster’中:
server.c:4964:1: 警告:在有返回值的函數(shù)中,控制流程到達函數(shù)尾 [-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
再執(zhí)行編譯:
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出現(xiàn)異常時笼沥,自動在slave中選擇一臺作為master蚪燕。