遇到的错误
In file included from server.c:30:0:
server.h:1051:5: 错误:expected specifier-qualifier-list before ‘_Atomic’
_Atomic unsigned int lruclock; /* Clock for LRU eviction */
^
server.c: 在函数‘serverLogRaw’中:
server.c:1032:31: 错误:‘struct redisServer’没有名为‘logfile’的成员
int log_to_stdout = server.logfile[0] == '\0';
^
server.c:1035:23: 错误:‘struct redisServer’没有名为‘verbosity’的成员
if (level < server.verbosity) return;
^
server.c:1037:47: 错误:‘struct redisServer’没有名为‘logfile’的成员
fp = log_to_stdout ? stdout : fopen(server.logfile,"a");
^
server.c:1050:47: 错误:‘struct redisServer’没有名为‘timezone’的成员
nolocks_localtime(&tm,tv.tv_sec,server.timezone,server.daylight_active);
^
server.c:1050:63: 错误:‘struct redisServer’没有名为‘daylight_active’的成员
nolocks_localtime(&tm,tv.tv_sec,server.timezone,server.daylight_active);
^
server.c:1053:19: 错误:‘struct redisServer’没有名为‘sentinel_mode’的成员
if (server.sentinel_mode) {
^
server.c:1058:32: 错误:‘struct redisServer’没有名为‘masterhost’的成员
role_char = (server.masterhost ? 'S':'M'); /* Slave or Master. */
^
server.c:1066:15: 错误:‘struct redisServer’没有名为‘syslog_enabled’的成员
if (server.syslog_enabled) syslog(syslogLevelMap[level], "%s", msg);
^
server.c: 在函数‘serverLog’中:
server.c:1076:30: 错误:‘struct redisServer’没有名为‘verbosity’的成员
if ((level&0xff) < server.verbosity) return;
^
server.c: 在函数‘serverLogFromHandler’中:
server.c:1093:31: 错误:‘struct redisServer’没有名为‘logfile’的成员
int log_to_stdout = server.logfile[0] == '\0';
^
server.c:1096:30: 错误:‘struct redisServer’没有名为‘verbosity’的成员
if ((level&0xff) < server.verbosity || (log_to_stdout && server.daemonize))
^
server.c:1096:68: 错误:‘struct redisServer’没有名为‘daemonize’的成员
if ((level&0xff) < server.verbosity || (log_to_stdout && server.daemonize))
^
server.c:1099:37: 错误:‘struct redisServer’没有名为‘logfile’的成员
open(server.logfile, O_APPEND|O_CREAT|O_WRONLY, 0644);
^
server.c: 在函数‘hasActiveChildProcess’中:
server.c:1477:18: 错误:‘struct redisServer’没有名为‘rdb_child_pid’的成员
return server.rdb_child_pid != -1 ||
^
server.c:1478:18: 错误:‘struct redisServer’没有名为‘aof_child_pid’的成员
server.aof_child_pid != -1 ||
^
server.c:1479:18: 错误:‘struct redisServer’没有名为‘module_child_pid’的成员
server.module_child_pid != -1;
^
server.c: 在函数‘allPersistenceDisabled’中:
server.c:1485:18: 错误:‘struct redisServer’没有名为‘saveparamslen’的成员
return server.saveparamslen == 0 && server.aof_state == AOF_OFF;
^
server.c:1485:47: 错误:‘struct redisServer’没有名为‘aof_state’的成员
return server.saveparamslen == 0 && server.aof_state == AOF_OFF;
^
server.c: 在函数‘trackInstantaneousMetric’中:
server.c:1492:36: 错误:‘struct redisServer’没有名为‘inst_metric’的成员
long long t = mstime() - server.inst_metric[metric].last_sample_time;
^
server.c:1494:27: 错误:‘struct redisServer’没有名为‘inst_metric’的成员
server.inst_metric[metric].last_sample_count;
^
server.c:1499:11: 错误:‘struct redisServer’没有名为‘inst_metric’的成员
server.inst_metric[metric].samples[server.inst_metric[metric].idx] =
^
server.c:1499:46: 错误:‘struct redisServer’没有名为‘inst_metric’的成员
server.inst_metric[metric].samples[server.inst_metric[metric].idx] =
^
server.c:1501:11: 错误:‘struct redisServer’没有名为‘inst_metric’的成员
server.inst_metric[metric].idx++;
^
server.c:1502:11: 错误:‘struct redisServer’没有名为‘inst_metric’的成员
server.inst_metric[metric].idx %= STATS_METRIC_SAMPLES;
^
server.c:1503:11: 错误:‘struct redisServer’没有名为‘inst_metric’的成员
server.inst_metric[metric].last_sample_time = mstime();
^
server.c:1504:11: 错误:‘struct redisServer’没有名为‘inst_metric’的成员
server.inst_metric[metric].last_sample_count = current_reading;
^
server.c:1491:35: 警告:形参‘metric’被设定但未被使用 [-Wunused-but-set-parameter]
void trackInstantaneousMetric(int metric, long long current_reading) {
^
server.c: 在函数‘getInstantaneousMetric’中:
server.c:1513:22: 错误:‘struct redisServer’没有名为‘inst_metric’的成员
sum += server.inst_metric[metric].samples[j];
^
server.c:1508:38: 警告:形参‘metric’被设定但未被使用 [-Wunused-but-set-parameter]
long long getInstantaneousMetric(int metric) {
^
server.c: 在函数‘clientsCronResizeQueryBuffer’中:
server.c:1523:29: 错误:‘struct redisServer’没有名为‘unixtime’的成员
time_t idletime = server.unixtime - c->lastinteraction;
^
server.c: 在函数‘clientsCronTrackExpansiveClients’中:
server.c:1580:19: 错误:‘struct redisServer’没有名为‘unixtime’的成员
int i = server.unixtime % CLIENTS_PEAK_MEM_USAGE_SLOTS;
^
server.c: 在函数‘clientsCronTrackClientsMemUsage’中:
server.c:1617:11: 错误:‘struct redisServer’没有名为‘stat_clients_type_memory’的成员
server.stat_clients_type_memory[c->client_cron_last_memory_type] -=
^
server.c:1619:11: 错误:‘struct redisServer’没有名为‘stat_clients_type_memory’的成员
server.stat_clients_type_memory[type] += mem;
^
In file included from server.h:63:0,
from server.c:30:
server.c: 在函数‘clientsCron’中:
server.c:1659:39: 错误:‘struct redisServer’没有名为‘clients’的成员
int numclients = listLength(server.clients);
^
adlist.h:57:25: 附注:in definition of macro ‘listLength’
#define listLength(l) ((l)->len)
^
server.c:1670:28: 错误:‘struct redisServer’没有名为‘clients’的成员
while(listLength(server.clients) && iterations--) {
^
adlist.h:57:25: 附注:in definition of macro ‘listLength’
#define listLength(l) ((l)->len)
^
server.c:1677:36: 错误:‘struct redisServer’没有名为‘clients’的成员
listRotateTailToHead(server.clients);
^
In file included from server.h:63:0,
from server.c:30:
server.c:1678:32: 错误:‘struct redisServer’没有名为‘clients’的成员
head = listFirst(server.clients);
^
adlist.h:58:24: 附注:in definition of macro ‘listFirst’
#define listFirst(l) ((l)->head)
^
server.c: 在函数‘databasesCron’中:
server.c:1696:15: 错误:‘struct redisServer’没有名为‘active_expire_enabled’的成员
if (server.active_expire_enabled) {
^
server.c:1720:34: 错误:‘struct redisServer’没有名为‘dbnum’的成员
if (dbs_per_call > server.dbnum) dbs_per_call = server.dbnum;
^
server.c:1720:63: 错误:‘struct redisServer’没有名为‘dbnum’的成员
if (dbs_per_call > server.dbnum) dbs_per_call = server.dbnum;
^
server.c:1724:51: 错误:‘struct redisServer’没有名为‘dbnum’的成员
tryResizeHashTables(resize_db % server.dbnum);
^
server.c:1729:19: 错误:‘struct redisServer’没有名为‘activerehashing’的成员
if (server.activerehashing) {
^
server.c:1739:40: 错误:‘struct redisServer’没有名为‘dbnum’的成员
rehash_db %= server.dbnum;
^
server.c: 在函数‘updateCachedTime’中:
server.c:1757:11: 错误:‘struct redisServer’没有名为‘ustime’的成员
server.ustime = ustime();
^
server.c:1758:11: 错误:‘struct redisServer’没有名为‘mstime’的成员
server.mstime = server.ustime / 1000;
^
server.c:1758:27: 错误:‘struct redisServer’没有名为‘ustime’的成员
server.mstime = server.ustime / 1000;
^
server.c:1759:11: 错误:‘struct redisServer’没有名为‘unixtime’的成员
server.unixtime = server.mstime / 1000;
^
server.c:1759:29: 错误:‘struct redisServer’没有名为‘mstime’的成员
server.unixtime = server.mstime / 1000;
^
server.c:1768:27: 错误:‘struct redisServer’没有名为‘unixtime’的成员
time_t ut = server.unixtime;
^
server.c:1770:15: 错误:‘struct redisServer’没有名为‘daylight_active’的成员
server.daylight_active = tm.tm_isdst;
^
server.c: 在函数‘checkChildrenDone’中:
server.c:1783:15: 错误:‘struct redisServer’没有名为‘rdb_child_pid’的成员
if (server.rdb_child_pid != -1 && server.rdb_pipe_conns)
^
server.c:1783:45: 错误:‘struct redisServer’没有名为‘rdb_pipe_conns’的成员
if (server.rdb_child_pid != -1 && server.rdb_pipe_conns)
^
server.c:1806:29: 错误:‘struct redisServer’没有名为‘rdb_child_pid’的成员
(int) server.rdb_child_pid,
^
server.c:1807:29: 错误:‘struct redisServer’没有名为‘aof_child_pid’的成员
(int) server.aof_child_pid,
^
server.c:1808:29: 错误:‘struct redisServer’没有名为‘module_child_pid’的成员
(int) server.module_child_pid);
^
server.c:1809:33: 错误:‘struct redisServer’没有名为‘rdb_child_pid’的成员
} else if (pid == server.rdb_child_pid) {
^
server.c:1812:33: 错误:‘struct redisServer’没有名为‘aof_child_pid’的成员
} else if (pid == server.aof_child_pid) {
^
server.c:1815:33: 错误:‘struct redisServer’没有名为‘module_child_pid’的成员
} else if (pid == server.module_child_pid) {
^
server.c: 在函数‘serverCron’中:
server.c:1857:15: 错误:‘struct redisServer’没有名为‘watchdog_period’的成员
if (server.watchdog_period) watchdogScheduleSignal(server.watchdog_period);
^
server.c:1857:62: 错误:‘struct redisServer’没有名为‘watchdog_period’的成员
if (server.watchdog_period) watchdogScheduleSignal(server.watchdog_period);
^
In file included from server.h:63:0,
from server.c:30:
server.c:1866:33: 错误:‘struct redisServer’没有名为‘clients’的成员
while (listLength(server.clients) / server.hz >
原因
安装6.0以上版本需要升级gcc到5.3及以上
解决方案
> #yum -y install centos-release-scl
> #yum -y install devtoolset-9-gcc devtoolset-9-gcc-c++
> #devtoolset-9-binutils
> #scl enable devtoolset-9 bash
需要注意的是scl命令启用只是临时的,退出shell或重启就会恢复原系统gcc版本。
如果要长期使用gcc 9.3的话:
echo “source /opt/rh/devtoolset-9/enable” >>/etc/profile
这样退出shell重新打开就是新版的gcc了
最后再make一下
后台启动
用指定配置文件去启动
关闭redis
redis-benchmark 测试
命令:
redis-benchmark -h localhost -p 6379 -c 100 -n 100000
//在本机上端口是6379,100个进程,每个进程100000次并发