特点

  1. 每个节点知道彼此之间的关系,也会知道自己的角色,当然他们也会知道自己存在与一个集群环境中,他们彼此之间可以交互和通信,比如ping pong。那么这些关系都会保存到某个配置文件中,每个节点都有,这个在搭建的时候会做配置的;
  2. 客户端要和集群建立连接的话,只需要和其中一个建立关系就行;
  3. 某个节点挂了,也是通过超过半数的节点来进行的检测,客观下线后主从切换,这个和哨兵模式相同;
  4. Redis中存在很多的插槽,又可以称之为槽节点,用于存储数据;

集群容错

  1. 构建Redis集群,一般需要至少3个节点作为master,以此组成一个高可用的集群,此外每个master都需要配备一个slave,所以整个集群需要6个节点,这也是最经典的Redis集群,也可以称之为三主三从,容错性更佳;

集群配置

  1. redis.conf 配置
# 开启集群模式
cluster-enabled yes
# 每一个节点需要有一个配置文件,需要6份;
# 每个节点处于集群的角色都需要告知其他所有节点,彼此知道;
# 这个文件用于存储集群模式下的集群状态等信息;
# 这个文件是由redis自己维护,我们不用管;
# 如果你要重新创建集群,那么把这个文件删了就行
cluster-config-file nodes-201.conf
# 超时时间,超时则认为master宕机,随后主备切换
cluster-node-timeout 5000
# 开启AOF
appendonly yes
  1. 创建集群
# 先启动所有Redis节点

# 创建集群,1-3为主,4-6为从,1和4,2和5,3和6分别对应为主从关系
# 这也是最经典用的最多的集群模式
# 主节点和从节点比例为1(最后一个1)
redis-cli -a {yourpassword} --cluster create ip1:port1 ip2:port2 ip3:port3 ip4:port4 ip5:port5 ip6:port6 --cluster-replicas 1

# 检查集群信息
redis-cli -a {yourpassword} --cluster check ip:prot

# 连接到集群(-c代表连接到集群)
redis-cli -c -a {password} -h {ip} -p {port}

# 查看集群信息
cluster info

槽节点(slots)

  1. 什么是槽节点(slots)
    • 在Redis集群中,所有的数据都是存储在slots中,客户端读取数据也是从slots中读取,slots一共有16384个;
  2. 槽节点(slots)分配
    • slots个数会均匀的分配给Redis集群中的每一个Master节点,Slave节点不会分配;
  3. 槽节点(slots)存储Redis数据的规则
    • hash(key)%16384

Q.E.D.

知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议

那一年,我也变成了光!!