Rumah  >  Artikel  >  pangkalan data  >  redis cluster集群介绍

redis cluster集群介绍

尚
ke hadapan
2020-05-18 09:06:301886semak imbas

不同于master-salve 或者 哨兵模式 cluster与他们最大的区别就是 前两种是全量存储 内存消耗大,且存在木桶效应而 cluster集群则是分布式存储 即每台Redis存储不同的内容。

redis cluster集群介绍

redis-cluster被设计为一共有16384个hash slot可用,每个master分得一部分的slot 其分布算法为:【hash_slot = crc16(key) mod 16384】  如果有{}则取{}的可用key,否则整个可以是可用key。集群至少要3主3从,且每个实例使用不同的配置文件。

1.jpg

  1. 所有的redis节点彼此互联(PING-PONG机制),内部使用二进制协议优化传输速度和带宽。

  2. 节点的fail是通过集群中超过半数的节点检测失效时才生效。

  3. 客户端与redis节点直连,不需要中间proxy层.客户端不需要连接集群所有节点,连接集群中任何一个可用节点即可。

  4. redis-cluster把所有的物理节点映射到[0-16383]slot上,cluster 负责维护node<->slot<->value

redis-cluster投票:容错

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

2、什么时候整个集群不可用(cluster_state:fail)?

如果集群任意master挂掉,且当前master没有slave.集群进入fail状态,也可以理解成集群的slot映射[0-16383]不完整时进入fail状态. 

redis-3.0.0.rc1加入cluster-require-full-coverage参数,默认关闭,打开集群兼容部分失败.

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

在redis-cluster架构中,redis-master节点一般用于接收读写,而redis-slave节点则一般只用于备份,其与对应的master拥有相同的slot集合,若某个redis-master意外失效,则再将其对应的slave进行升级为临时redis-master。

在redis的官方文档中,对redis-cluster架构上,有这样的说明:在cluster架构下,默认的,一般redis-master用于接收读写,而redis-slave则用于备份,当有请求是在向slave发起时,会直接重定向到对应key所在的master来处理。

但如果不介意读取的是redis-cluster中有可能过期的数据并且对写请求不感兴趣时,则亦可通过readonly命令,将slave设置成可读,然后通过slave获取相关的key,达到读写分离。

更多redis知识请关注redis入门教程栏目。

Atas ialah kandungan terperinci redis cluster集群介绍. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:oschina.net. Jika ada pelanggaran, sila hubungi admin@php.cn Padam