精华内容
下载资源
问答
  • redis集群节点宕机

    2021-01-07 11:07:52
    redis集群是有很多个redis一起工作,那么就需要这个集群不是那么容易挂掉,所以呢,理论上就应该给集群中的每个节点至少一个备用的redis服务。这个备用的redis称为从节点(slave)。 1、集群是如何判断是否有某个...

    备注:文章转载为了方便自己内容查看,如果侵权,联系我删除文章,谢谢。

    链接:https://www.cnblogs.com/hmxs/p/12101921.html

    redis集群是有很多个redis一起工作,那么就需要这个集群不是那么容易挂掉,所以呢,理论上就应该给集群中的每个节点至少一个备用的redis服务。这个备用的redis称为从节点(slave)。

    1、集群是如何判断是否有某个节点挂掉

      首先要说的是,每一个节点都存有这个集群所有主节点以及从节点的信息。它们之间通过互相的ping-pong判断是否节点可以连接上。如果有一半以上的节点去ping一个节点的时候没有回应,集群就认为这个节点宕机了,然后去连接它的备用节点。

     

    2、集群进入fail状态的必要条件

    A、某个主节点和所有从节点全部挂掉,我们集群就进入faill状态。

    B、如果集群超过半数以上master挂掉,无论是否有slave,集群进入fail状态.

     C、如果集群任意master挂掉,且当前master没有slave.集群进入fail状态

     

    3、redis的投票机制

    具体原理如下图所示:

        

    投票过程是集群中所有master参与,如果半数以上master节点与master节点通信超时(cluster-node-timeout),认为当前master节点挂掉。

        选举的依据依次是:网络连接正常->5秒内回复过INFO命令->10*down-after-milliseconds内与主连接过的->从服务器优先级->复制偏移量->运行id较小的。选出之后通过slaveif no ont将该从服务器升为新主服务器。

        通过slaveof ip port命令让其他从服务器复制该信主服务器。

        最后当旧主重新连接后将其变为新主的从服务器。注意如果客户端与旧主服务器分隔在一起,写入的数据在恢复后由于旧主会复制新主的数据会造成数据丢失。

    4、集群中的主从复制
          集群中的每个节点都有1个至N个复制品,其中一个为主节点,其余的为从节点,如果主节点下线了,集群就会把这个主节点的一个从节点设置为新的主节点继续工作,这样集群就不会因为一个主节点的下线而无法正常工作。
    注意:
    1、如果某一个主节点和他所有的从节点都下线的话,redis集群就会停止工作了。redis集群不保证数据的强一致性,在特定的情况下,redis集群会丢失已经被执行过的写命令。
    2、使用异步复制(asynchronous replication)是redis 集群可能会丢失写命令的其中一个原因,有时候由于网络原因,如果网络断开时间太长,redis集群就会启用新的主节点,之前发给主节点的数据就会丢失。

    展开全文
  • 字节一面:Redis节点宕机,如何处理?

    千次阅读 多人点赞 2021-12-01 18:13:29
    大家好,我是Tom哥~今天跟大家聊下,如果Redis某个节点宕机了,要怎么处理?我们知道,Redis集群一般采用主从模式,主节点负责写,从节点负责读。从节点故障从节点主要提供读服务,为了分摊主服务器压力,一般会有多...

    微信搜索 【微观技术】,关注这个不喜欢内卷的程序员。

    精彩文章汇总 GitHub https://github.com/aalansehaiyang/technology-talk ,Star 12K ,汇总java生态圈常用技术框架、开源中间件,系统架构、数据库、大公司架构案例、常用三方类库、项目管理、线上问题排查、个人成长、思考等知识

    大家好,我是Tom哥~

    今天跟大家聊下,如果Redis某个节点宕机了,要怎么处理?

    我们知道,Redis集群一般采用主从模式,主节点负责写,从节点负责读。

    从节点故障

    从节点主要提供读服务,为了分摊主服务器压力,一般会有多个从节点。

    如果是从节点故障,不算什么大问题,客户端把该故障节点屏蔽即可,仍可访问其他的主、从节点满足正常的业务功能。

    主节点故障

    如果是主节点宕机了,那就有点麻烦了,毕竟写操作是在主节点上,无法替代。

    这时候,我们要干一件事,从所有的从库节点中挑选一台做为主节点。这里要介绍下Sentienl 哨兵机制了。

    哨兵机制分为三个阶段:

    1、监控。哨兵进程会周期给所有的主库、从库发送 PING 命令,检测机器是否处于服务状态。如果没有在设置时间内收到回复,则判定为下线。

    2、选主。主要是看各个节点的打分情况,打分规则分为 从库优先级从库复制进度从库ID号。只要有一轮,某个从库得分最高,则选举它为主库。

    • 从库优先级,主要是考虑到不同的机器可能配置不一样,配置高的机器,优先级高一些,通过slave-priority 来配置

    • 从库复制进度,主要是看slave_repl_offset 的值大小,值越大表示已经同步的数据越多,得分越高。

    • 从库ID号,每个Redis 实例启动时,都会生成一个 ID,在优先级和复制进度相同的条件下,ID号最小的从库分数最高,会被选为新主库。

    3、通知。把选举后的新主库发送给所有节点,让所有的从库执行 replicaof 命令,和新 master建立主从关系、数据同步复制。另外,也会把最新的主库信息同步给客户端。这样后续的写请求会打到新的 主节点上。

    我们知道网络存在不稳定性,所以会不会有什么特殊问题?我们继续往下看

    网络抖动,引发误判

    问题描述:

    哨兵节点监控到主节点超时未响应,主节点不一定是真的宕机。可能是之间的网络拥堵,或者主库自身压力过大,导致响应超时。

    如何避免这种情况?

    引入哨兵集群,多个哨兵实例一起判断,降低误判率。判断标准就是,假如 n 个哨兵实例,至少有 n/2+1 个判定一致,才可以定论。

    注意:

    上面的误判只会用在主库,从库只是负责读,如果监测到未响应,直接标记为 ”下线“,并不需要集群投票验证其真实性。

    如果是主库超时未响应,则不能这么草率决定,毕竟后面的选主和通知都是一笔不小的开销,所以,标记主库”下线“,一定要慎之又慎。

    那么,哨兵集群集如何投票,确认主节点是否真的下线呢?在深入这个问题之前,我们先来了解下哨兵集群

    哨兵集群如何构建?

    首先,在redis-sentinel 的conf文件里添加两个配置项:

    sentinel monitor <master-name> <ip> <redis-port> <quorum> 
    
    
    • master-name:对某个master+slave 组合的一个区分标识(一套sentinel是可以监听多套master+slave这样的组合)

    • ip 和 port:就是master节点的 ip 和 端口号。

    • quorum:进行客观下线的一个依据,意思是至少有 quorum 个sentinel主观的认为这个master有故障,才会对这个master下线或故障转移。

    整理了一份大厂常考面试题,这份pdf包括 Java基础、Java并发、JVM、MySQL、Redis、Spring、MyBatis、Kafka、设计模式等面试题,分享给大家。
    下载地址:百度云链接:https://pan.baidu.com/s/1XHT4ppXTp430MEMW2D0-Bg 提取码: s3ab

    sentinel down-after-milliseconds <master-name>  <timeout>
    
    
    • timeout:毫秒值,如果这台sentinel超过timeout时间无法连通master或slave(slave不需要客观下线,因为不需要故障转移),就会主观认为该master已经下线(实际下线需要客观下线的判断通过才会真正下线)

    借助发布/订阅组建哨兵集群

    我们知道Redis 有pub/sub 机制,当一个哨兵与主库建立连接,可以在主库上发布自己的消息(ip、port),当然也可以在主库上订阅其他哨兵发布的消息。

    有点类似MQ的topic味道,大家基于同一个topic完成数据交换。

    当所有的哨兵都完成上述动作,哨兵集群也就组建完成。

    为什么要组建哨兵集群呢?因为后面的选主需要有一个leader带头操作。

    哨兵如何知道所有从库地址呢?

    我们知道每个哨兵实例的配置参数里有配置主库的ip和port,而每个主库要同步数据给从库,自然有挂载的所有从库信息。

    所以,哨兵实例只需向主库发送INFO命令即可获取到所需要的信息,然后哨兵实例在依次与从库建立连接。

    至此,一个哨兵实例便可以收集到整个Redis 集群的数据,包含三块:

    • 所有的哨兵节点ip、port

    • 主节点ip、port

    • 主节点挂载的所有从节点的 ip、port

    其他哨兵实例也是一样道理,这里就不在赘述了。

    哨兵是个集群,选主需要有个带头大哥

    当一个哨兵实例监控到主库”主观下线“后,给其他实例发送 is-master-down-by-addr 命令,其他哨兵实例根据自己与主库的连接情况,做出 Y 或 N的回复。

    当这个哨兵收集到了超过 quorum 配置项的 Y 回复后,就会标记主库”客观下线“。

    下面,就要进入选主阶段了。正所谓”一山不容二虎“,那么由哪个哨兵实例来执行选主操作呢?

    图片

    还是公平点,采用民主投票。先在 哨兵集群中选出一个带头大哥,由它代表大家执行后续操作。

    如何选哨兵Leader?

    上图画了个流程实例,三个哨兵节点在 t1~t6 不同时刻点的投票情况。

    当一个哨兵实例收到超过 设置的quorum 票Y后,它会成为新的Leader。然后由它(哨兵S3)负责后面的从库选主,通知从库与新主库建立关系并同步数据,通知客户端访问新主库。

    如果本轮没有选出Leader节点,等哨兵故障转移超时时间的 2 倍时间后,重新发起新一轮选举。

    为了保证哨兵Leader选举的顺利进行,除了对网络质量有要求外,最好配置奇数个哨兵节点且最好三个以上。

    哨兵也是实例,如果挂了怎么办?

    哨兵主要是用来监控Redis集群的健康状况,本身并不提供服务。

    当一个哨兵实例挂掉后,会影响到集群的监测。为了降低影响,我们引入哨兵集群,降低单点风险,由哨兵集群保障Redis主从集群的健康。

    举个例子:

    哨兵集群配置了三个实例,quorum 配置值为2。当一个哨兵实例宕机后,其余两个哨兵实例依然可以完成选举,只是可能存在一定风险而已。

    哨兵集群完成了主从切换,客户端如何感知?

    我们知道Redis有pub/sub机制,为了便于外部知道当前的切换进度,哨兵提供了多个订阅频道。

    其中就有一个新主库切换频道,(switch-master)

    SUBSCRIBE +switch-master
    
    

    订阅对应频道,可以获得切换后的新主库ip、port,并与之建立连接,继续享受Redis服务。


    关于我:Tom哥,前阿里P7技术专家,出过专利,多年大厂实战经验。欢迎关注,我会持续输出更多经典原创文章,为你大厂助力。

    欢迎小伙伴找Tom哥唠嗑聊天, 技术交流,围观朋友圈,人生打怪不再寂寞。

    展开全文
  • 先来查看集群节点信息192.168.56.101:6382> cluster nodes03596d92625f1b778f29eb4a9128d92809dfd79a 192.168.56.101:6381 master - 0 1468858392134 2 connected 5795-10922b1939026deb80fedde7bdb22c1df3ecfaa...

    先来查看集群节点信息

    192.168.56.101:6382> cluster nodes

    03596d92625f1b778f29eb4a9128d92809dfd79a 192.168.56.101:6381 master - 0 1468858392134 2 connected 5795-10922

    b1939026deb80fedde7bdb22c1df3ecfaa72f608 192.168.56.101:6380 master - 0 1468858393149 5 connected 0-5794 10923-11255

    6aa027917d223b8fedd42893a89fb0e2c07c8b27 192.168.56.101:6382 myself,master - 0 0 3 connected 11256-16383

    [root@master redis-cluster]# ps -ef | grep redis

    root      8921     1  0 Jul18 ?        00:00:08 /usr/local/bin/redis-server 192.168.56.101:6380 [cluster]

    root      8925     1  0 Jul18 ?        00:00:07 /usr/local/bin/redis-server 192.168.56.101:6381 [cluster]

    root      8929     1  0 Jul18 ?        00:00:07 /usr/local/bin/redis-server 192.168.56.101:6382 [cluster]

    root     23289  1785  0 00:13 pts/0    00:00:00 grep redis

    把6382的进程kill 掉,再查看集群节点信息,发现6382的状态是disconnected

    192.168.56.101:6380> cluster nodes

    6aa027917d223b8fedd42893a89fb0e2c07c8b27 192.168.56.101:6382 master,fail - 1468858541215 1468858540912 3 disconnected 11256-16383

    03596d92625f1b778f29eb4a9128d92809dfd79a 192.168.56.101:6381 master - 0 1468858579644 2 connected 5795-10922

    b1939026deb80fedde7bdb22c1df3ecfaa72f608 192.168.56.101:6380 myself,master - 0 0 5 connected 0-5794 10923-11255

    想向集群中写入数据是没法进行的,提示的错误信息是集群挂掉了

    192.168.56.101:6380> set k2 111

    (error) CLUSTERDOWN The cluster is down

    故障机制

    1、 集群中的每个节点都会定期的向其它节点发送PING命令,并且通过有没有收到回复判断目标节点是否下线;

    2、 集群中每一秒都会随机选择几个节点,然后选择其中最久没有响应的节点放PING命令;

    3、 如果一定时间内目标节点都没有响应,那么该节点就认为目标节点疑似下线;

    4、 当集群中的节点超过半数认为该目标节点疑似下线,那么该节点就会被标记为下线;

    5、

    当集群中的任何一个节点下线,就会导致插槽区有空档,不完整,那么该集群将不可用;

    6、 如何解决上述问题?

    a) 在Redis集群中可以使用主从模式实现某一个节点的高可用

    b) 当该节点(master)宕机后,集群会将该节点的从数据库(slave)转变为(master)继续完成集群服务;

    书生参考网络整理

    展开全文
  • token(这个不重要,主要说的是springboot和redis集群),最近应甲方要求,需要做redis集群,在测试主从切换的时候发现,redis的master虽然切换过来了,但是springboot连接redis还是请求的之前掉的节点ip,没有...

    前提:

    #        本文是在确保redis集群配置正确的情况下,连接超时的解决方案。

            项目登录认证使用的是sa-token(这个不重要,主要说的是springboot和redis集群),最近应甲方要求,需要做redis集群,在测试主从切换的时候发现,redis的master虽然切换过来了,但是springboot连接redis还是请求的之前宕掉的节点ip,没有更新过来。

    原因:

            SpringBoot2.X版本开始Redis默认的连接池都是采用的Lettuce。当节点发生改变后,Letture默认是不会刷新节点拓扑的,需要手动去刷新。

    解决方案:

            方案一、把lettuce换成jedis(我用的这个,亲测好使)

     #        切换jedis有个问题,就是在master宕机,cluster升为master期间,15秒内还是会报连接超时,15秒后项目正常了,项目流量大的慎用。

            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-data-redis</artifactId>
                <version>2.1.5.RELEASE</version>
                    <!-- 不用lettuce ,用jedis -->
                    <exclusions>
                        <exclusion>
                            <groupId>io.lettuce</groupId>
                            <artifactId>lettuce-core</artifactId>
                        </exclusion>
                    </exclusions>
            </dependency>
    
    
            <dependency>
                <groupId>redis.clients</groupId>
                <artifactId>jedis</artifactId>
                <version>3.1.0-m4</version>
            </dependency>

    方案二:(这个是网上摘得,没有做测试,各位大佬有时间可以试试)

        @Autowired
    	private RedisProperties redisProperties;
     
    	@Bean
    	public GenericObjectPoolConfig<?> genericObjectPoolConfig(Pool properties) {
    		GenericObjectPoolConfig<?> config = new GenericObjectPoolConfig<>();
    		config.setMaxTotal(properties.getMaxActive());
    		config.setMaxIdle(properties.getMaxIdle());
    		config.setMinIdle(properties.getMinIdle());
    		if (properties.getTimeBetweenEvictionRuns() != null) {
    			config.setTimeBetweenEvictionRunsMillis(properties.getTimeBetweenEvictionRuns().toMillis());
    		}
    		if (properties.getMaxWait() != null) {
    			config.setMaxWaitMillis(properties.getMaxWait().toMillis());
    		}
    		return config;
    	}
    	
    	@Bean(destroyMethod = "destroy")
    	public LettuceConnectionFactory lettuceConnectionFactory() {
    		
    	    //开启 自适应集群拓扑刷新和周期拓扑刷新
    	    ClusterTopologyRefreshOptions clusterTopologyRefreshOptions =  ClusterTopologyRefreshOptions.builder()
    	    		// 开启全部自适应刷新
    	            .enableAllAdaptiveRefreshTriggers() // 开启自适应刷新,自适应刷新不开启,Redis集群变更时将会导致连接异常
    	            // 自适应刷新超时时间(默认30秒)
    	            .adaptiveRefreshTriggersTimeout(Duration.ofSeconds(30)) //默认关闭开启后时间为30秒
    	    		// 开周期刷新 
    	    		.enablePeriodicRefresh(Duration.ofSeconds(20))  // 默认关闭开启后时间为60秒 ClusterTopologyRefreshOptions.DEFAULT_REFRESH_PERIOD 60  .enablePeriodicRefresh(Duration.ofSeconds(2)) = .enablePeriodicRefresh().refreshPeriod(Duration.ofSeconds(2))
    	            .build();
    		
    	    // https://github.com/lettuce-io/lettuce-core/wiki/Client-Options
    	    ClientOptions clientOptions = ClusterClientOptions.builder()
    	            .topologyRefreshOptions(clusterTopologyRefreshOptions)
    	            .build();
     
    	    LettuceClientConfiguration clientConfig = LettucePoolingClientConfiguration.builder()
    				.poolConfig(genericObjectPoolConfig(redisProperties.getLettuce().getPool()))
    				//.readFrom(ReadFrom.MASTER_PREFERRED)
    				.clientOptions(clientOptions)
    				.commandTimeout(redisProperties.getTimeout()) //默认RedisURI.DEFAULT_TIMEOUT 60  
    				.build();
    	    
    		List<String> clusterNodes = redisProperties.getCluster().getNodes();
    		Set<RedisNode> nodes = new HashSet<RedisNode>();
    		clusterNodes.forEach(address -> nodes.add(new RedisNode(address.split(":")[0].trim(), Integer.valueOf(address.split(":")[1]))));
    		
    		RedisClusterConfiguration clusterConfiguration = new RedisClusterConfiguration();
    		clusterConfiguration.setClusterNodes(nodes);
    		clusterConfiguration.setPassword(RedisPassword.of(redisProperties.getPassword()));
    		clusterConfiguration.setMaxRedirects(redisProperties.getCluster().getMaxRedirects());
    		
    		LettuceConnectionFactory lettuceConnectionFactory = new LettuceConnectionFactory(clusterConfiguration, clientConfig);
    		// lettuceConnectionFactory.setShareNativeConnection(false); //是否允许多个线程操作共用同一个缓存连接,默认true,false时每个操作都将开辟新的连接
    		// lettuceConnectionFactory.resetConnection(); // 重置底层共享连接, 在接下来的访问时初始化
    		return lettuceConnectionFactory;
    	}

    展开全文
  • Redis主节点宕机,如何处理? 原创 Tom哥 微观技术 2021-12-01 12:01 大家好,我是Tom哥~ 今天跟大家聊下,如果Redis某个节点宕机了,要怎么处理? 我们知道,Redis集群一般采用主从模式,主节点负责写,从...
  • 1.使用Lettuce增加以下配置即可,也可代码方式设置: 相比jedis客户端,lettuce是netty的实现方式,... redis: lettuce: pool: max-active: 10 max-idle: 10 min-idle: 1 max-wait: -1 cluster: refresh: adapt
  • centos6.10redis-4.0.11Linux GZNC-cluster10 2.6.32-696.el6.x86_64 #1 SMP Tue Mar 21 19:29:05 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux集群配置共10台物理主机,物理双核256G内存,每台机器配置一个主节点,...
  • Redis故障发现主观下线当cluster-node-timeout时间内某节点无法与另一个节点顺利完成ping消息通信时,则将该节点标记为主观下线状态。客观下线当某个节点判断另一个节点主观下线后,该节点的下线报告会通过Gossip...
  • Redis主A从B,C,D模式下,主A向从B,C,D准备写数据时,主突然挂掉了.B被选为主节点后,A重启变为从节点,A里面未同步的数据怎么办? 思考: 主A向从B,C,D准备写数据时:此时主从数据不一致; A变从后无权向主B或其他从写数据,...
  • sdown和odown转换机制sdown和odown两种失败状态sdown是主观宕机,就一个哨兵如果自己觉得一个master宕机了,那么就是主观宕机odown是客观宕机,如果quorum数量的哨兵都觉得一个master宕机了,那么就是客观宕机sdown...
  • Redis节点搭建 第一步:环境准备 我们准备两台虚拟机 局域网IP 分别是 192.168.1.109和192.168.1.110 我们约定把192.168.1.109作为集群控制端,需要安装redis-trib.rb 第二步:安装Redis 前面已经安装过了 不...
  • 数据迁移方式 ... ...集群部署:Redis 集群的键空间被分割为 16384 hash个槽(slot), 集群的最大节点数量也是 16384 个 关系:cluster>node>slot>key 分片: Redis Cluster在设计中没有
  • 环境:centOs系统一、安装redis:1.下载安装(先装c编译器yum -y install gcc)$ wget http://download.redis.io/releases/redis-4.0.6.tar.gz$ tar xzf redis-4.0.6.tar...启动:src/redis-server3.交互$ src/redis-c...
  • Redis集群原理详解

    万次阅读 多人点赞 2021-02-01 03:09:27
    一、redis cluster 介绍: 1、单实例的Redis架构: 最开始的一主N从加上读写分离,Redis作为缓存单实例貌似也还不错,并且有Sentinel哨兵机制,可以实现主从故障迁移。 单实例Redis本质上只有一台Master作为...
  • Redis集群中故障恢复

    2021-01-26 22:15:42
    Redis集群中故障恢复 问题1:如果主节点下线?从节点能否自动升为主节点? 答:主节点下线,从节点自动升为主节点。 问题2:主节点恢复后,主从关系会如何? 主节点恢复后,主节点变为从节点! 问题3:如果所有某...
  • 采用的是Spring自带的缓存管理,使用Redis做缓存,在Spring中配置如下@Configuration@EnableCachingpublic class CachingConfig {@Beanpublic CacheManager cacheManager(RedisTemplate redisTemplate) {return new ...
  • 1.1redis集群宕机的条件 宕机条件:Redis中的主机缺失时,且没有从机替补,redis内存数据丢失,这时Redis集群就崩溃了。 问题1:6台redis 3主3从(1主1从分为3组),至少Redis宕机几台集群崩溃? 至少2台 集群崩溃 ...
  • 文章目录一、主从集群二、哨兵集群2-1、哨兵的作用2-2、哨兵原理三、分片集群3-1、分片集群简单理解3-2、分片集群深入理解3-3、Redis集群图3-4、其它补充三、集群搭建3-1、环境准备3-2、配置文件修改3-3、启动全部的...
  • redis集群宕机

    2021-03-15 22:10:52
    思路: 1. 查看下节点状态 cluster nodes 2. 有问题的节点 移除集群 3. 重启问题节点 加入集群
  • 文章目录背景事故描述问题分析日志记录关键日志疑惑与猜测原因排查...机器发生了宕机,查看后发现有个节点没有自动切库成功,为了保证集群对外能正常服务,所以决定手动强制切库,保证集群对外的可用性。 事故描述 先使
  • Redis集群搭建及java连接redis Redis集群分为三种: ...(3)主节点宕机后,从节点会等待主节点修复归来,整个集群无法使用。而一个从节点宕机,不会影响到其他节点的运行。 1.2、主从模式的搭建 (1)redi
  • redis集群及java的实现

    2021-02-12 09:09:56
    根据redis安装的第一个redis开始的1.在redis.conf的目录下创建redis-...进入redis-cluster ,创建几个集群6001-6006mkdir 6001 mkdir 6001 mkdir 6003 mkdir 6004 mkdir 6005 mkdir 60063.然后再创建data包mkdir ...
  • 为什么集群?通常,为了提高网站响应速度,总是把热点数据保存在内存中而不是直接从后端数据库中读取。Redis是一个很好的Cache工具。大型网站应用,热点数据量往往巨大,几十G上百G是很正常的事儿,在这种情况下,...
  • Redis集群出现的问题及处理方法

    千次阅读 2021-01-11 17:24:49
    1、使用redis-cli -p 6379 --cluster create命令创建Redis集群,报错如下 [ERR] Node 172.24.83.165:6381 is not empty. Either the node already knows other nodes (check with CLUSTER NODES) or contains some ...
  • 有什么好处,基于内存,抗压 redis集群怎么进行数据分配,hash槽 redis的主从复制是怎么实现的 redis的数据结构 最常问 hash是什么, sorted set怎么实现的 因为项目的原因,问我redis是怎么保证高可用的,主从和...
  • Redis集群

    2021-03-03 13:39:54
    2.1 Redis集群至少需要3个节点,因为投票容错机制要求超过半数节点认为某个节点挂了该节点才是挂了,所以2个节点无法构成集群。 . 2.2 要保证集群的高可用,需要每个节点都有从节点,也就是备份节点,所以Redis集群...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 33,243
精华内容 13,297
关键字:

启动redis集群节点宕机了

redis 订阅