Redis学习笔记——集群(cluster)

文章目录

    • 简介
    • Redis集群结构设计
    • cluster集群结构搭建
      • 搭建方式
      • Cluster配置
      • 使用redis-trib.rb将所有的节点连接创建集群
      • 设置与获取数据
      • 主从下线与主从切换

简介

集群就是使用网络将若干台计算机联通起来,并提供统一的管理方式,使其对外呈现单机的服务效果。
简单的来说,之前是单master多从,现在是多master多从,且master之间相互关联,分摊负载。

集群作用

  • 分散单台服务器的访问压力,实现负载均衡
  • 分散单台服务器的存储压力,实现可扩展性
  • 降低单台服务器宕机带来的业务灾难

Redis集群结构设计

  • 通过一定算法,计算出key应该保存的位置
  • 将所有的存储空间计划切割成16384份,每台主机保存一部分每份代表的是一个存储空间,不是一个key的保存空间,这块空间一般称为槽(slot)
  • 将key按照计算出的结果放到对应的存储空间

如下,某一个key通过一定算法获得一个值最后%16384得到37,然后将该值存入到37这块空间内
Redis学习笔记——集群(cluster)_第1张图片
可扩展性

当增加机器时,其他Redis将一部分槽转移至新增的机器中,当减少机器时,将机器中的槽转移到其它机器里。
Redis学习笔记——集群(cluster)_第2张图片
集群内部通讯设计

  • 各个数据库相互通信,保存各个库中槽的编号数据(该编号不是连续的)
  • 当获取一个key时,会选择其中一个redis,假如正好在该服务器中,直接取出
  • 当不在该服务器中时,会查询保存在库中的编号数据去寻找正确的服务器。
    Redis学习笔记——集群(cluster)_第3张图片

cluster集群结构搭建

搭建方式

  • 原生安装(单条命令)
    • 配置服务器
    • 建立通信(Meet)
    • 分槽(Slot)
    • 搭建主从(master-slave)
  • 工具安装(批处理)

Cluster配置

在对应的redis.conf文件中进行配置

  • 添加集群节点
cluster-enabled yes
  • 每个cluster配置文件名,该文件属于自动生成,仅用于快速查找文件并查询文件内容
cluster-config-file <filename>
  • 节点服务响应超时时间,用于判定该节点是否下线或切换为从节点
cluster-node-timeout <milliseconds>
  • master连接的slave最小数量
cluster-migration-barrier <count>

将配置文件复制成诺干份(集群中节点数量),修改对应的ip与端口号

使用redis-trib.rb将所有的节点连接创建集群

./redis-trib.rb create --replicas 1 ip1:port1 ...	ipn:portn

解释下这个命令。关于replicas后面跟着的数字表示一个maste对应几个slave,现在为1,假如后面一共6对ip:port,则前三个为master,后三个对应为前三个的salve;假如为2,后面有9对ip:port,则前三个为master,后6个对应为前三个master的salve,每个master对应2个slave。

配置完之后可以查看cluster-config-file文件中内容。

设置与获取数据

启动客户端时需要加上参数 -c,不然无法正常的设置和获取数据。

redis-cli -c

主从下线与主从切换

可参照哨兵章节的内容。

你可能感兴趣的:(redis)