Redis6在centos7上安装

遇到的错误

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次并发

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 在CentOS 7上部署Redis Cluster集群的步骤如下: 1. 安装Redis。可以使用yum安装,命令为:yum install redis。 2. 在每台机器上配置redis.conf文件。需要修改的配置项包括:bind IP地址、端口号、cluster-enabled yes、cluster-config-file nodes.conf、cluster-node-timeout 15000。 3. 启动每台机器上的Redis服务。命令为:systemctl start redis。 4. 在一台机器上执行redis-cli --cluster create命令,创建集群。命令格式为:redis-cli --cluster create <host:port> <host:port> <host:port> … --cluster-replicas <replicas>。 5. 验证集群是否正常工作。可以使用redis-cli --cluster info命令查看集群信息,使用redis-cli --cluster nodes命令查看集群中的节点。 注意: - 安装redis-trib.rb - redis-cli --cluster create 参数的IP是各自机器的IP,端口号应该相同 - 集群中可以有多个主节点 - 如果集群已经存在,那么需要在新加入节点上进行redis-trib add-node ### 回答2: 在CentOS 7上部署Redis 7的集群,需要执行以下步骤: 1. 安装Redis 7: 首先,确保已经安装CentOS 7的操作系统。然后,通过以下命令安装Redis 7的依赖项: ```bash sudo yum install epel-release sudo yum install redis ``` 安装完成后,验证Redis是否成功安装: ```bash redis-cli --version ``` 如果输出了Redis的版本信息,则表示安装成功。 2. 配置Redis集群节点: 创建redis-cluster文件夹,然后在该文件夹下创建6个目录,分别用于存储6个节点的配置和数据: ```bash mkdir redis-cluster cd redis-cluster mkdir node1 node2 node3 node4 node5 node6 ``` 在每个节点文件夹下创建redis.conf配置文件,并进行相应的配置。至少需要配置以下参数: ```bash bind 0.0.0.0 port <port_number> cluster-enabled yes cluster-config-file nodes.conf cluster-node-timeout <timeout_in_ms> appendonly yes ``` 其中,<port_number>是每个节点的端口号,<timeout_in_ms>是集群节点通信的超时时间。 3. 启动Redis集群节点: 使用以下命令启动每个节点: ```bash redis-server /path/to/redis-conf-file.conf ``` 比如,启动第一个节点: ```bash redis-server /path/to/redis-cluster/node1/redis.conf ``` 4. 创建Redis集群: 使用以下命令创建Redis集群: ```bash redis-cli --cluster create <node1_ip:port> <node2_ip:port> ... --cluster-replicas 1 ``` 比如,创建Redis集群的命令为: ```bash redis-cli --cluster create 127.0.0.1:7001 127.0.0.1:7002 127.0.0.1:7003 127.0.0.1:7004 127.0.0.1:7005 127.0.0.1:7006 --cluster-replicas 1 ``` 这个命令会将节点连接成一个集群,并指定1个副本。 5. 验证Redis集群是否正常工作: 使用以下命令验证Redis集群是否正常工作: ```bash redis-cli -c -p <any_port> ``` 比如,连接到第一个节点的Redis CLI: ```bash redis-cli -c -p 7001 ``` 然后,运行一些Redis命令进行验证: ```bash set key1 value1 get key1 ``` 至此,Redis 7的集群在CentOS 7上部署完成。可以通过添加更多的节点来扩展集群,并根据需要调整配置参数。 ### 回答3: 在CentOS 7上部署Redis 7的集群主要可以通过以下步骤来完成: 1. 安装Redis 7:在CentOS 7上安装Redis 7可以使用源码编译安装或者使用软件包管理工具(如yum)来安装。可以从Redis官方网站下载最新版本的源码并编译安装,或者使用以下命令通过yum安装: ``` $ sudo yum update $ sudo yum install redis ``` 2. 配置Redis 7:Redis的配置文件位于`/etc/redis.conf`。可以使用文本编辑器(如vi或nano)打开该文件并进行必要的配置更改,以确保集群设置能够正常工作。配置参数包括端口、绑定IP、密码等。 3. 创建集群:使用Redis提供的`redis-cli`命令行工具创建Redis集群。集群至少需要3个主节点才能正常工作。可以通过以下命令创建Redis集群: ``` $ redis-cli --cluster create <Node1IP>:<Port> <Node2IP>:<Port> <Node3IP>:<Port> ... ``` 其中,`NodeIP`和`Port`分别是节点的IP地址和端口号,具体根据实际情况进行填写。该命令会自动进行分区和数据分配。 4. 验证集群:在创建集群后,可以使用`redis-cli`连接到集群,并使用`cluster nodes`命令来验证集群的状态,以确保所有节点正常运行并连接到正确的集群。 ``` $ redis-cli -c -h <NodeIP> -p <Port> redis> cluster nodes ``` 该命令将返回当前集群的节点信息,包括节点ID、IP地址、端口、角色等。 5. 扩展和管理集群:一旦集群正常运行,可以通过添加新的节点或对节点进行重新分区来扩展和管理集群。可以使用`redis-cli`命令行工具添加新节点,然后使用`cluster reshard`命令来重新分区。 以上是在CentOS 7上部署Redis 7集群的基本步骤。根据具体的需求和情况,还可以进行更深入的集群配置和管理。请注意,集群的设置和管理需要仔细考虑,并且需要深入了解Redis集群的工作原理和最佳实践。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值