Java学习 - Redis-Cluster

为什么需要集群

  • 为了高的处理速度
    • 单机redis,官网宣传处理速度为10万命令/秒
    • 如果业务需要更高的处理速度,则需要使用集群
  • 为了存储大量数据
    • 一般机器的内存为16-256G
    • 如果想要存储更大量的数据,则需要使用集群

分布式之数据分区

  • 因为数据需要分布存储在不同的节点上,所以数据在进行存储之前需要先分区

  • 数据分区示意图

  • 数据分区方法

    分区方式 特点 典型产品
    顺序分区 数据分散有倾斜(某些节点有过多热门数据) 可以顺序访问 键与业务有关 BigTabl HBase
    哈希分区 数据分布无倾斜 不能顺序访问 键与业务无关(由哈希函数生成) Redis Cluster Memcache
  • 哈希分区的三种方法

    • 节点取分区余法

      • 原理:数据所属节点 = Hash(key) % 节点数
      • 优点:原理简单,实现简单
      • 缺点:在进行节点伸缩过程中,可能会发生大量的数据迁移,且缓存会失效
      • 经验:进行节点伸缩时,最好是以倍数进行扩容或缩减
    • 一致性哈希分区法

      • 原理:先定义Hash的取值范围,令它组成一个环,集群中每个节点负责一区间的Hash值,当一个数据加入集群时,让它加入哈希值按顺时针最近的节点

复制代码
* 优点:节点伸缩只会影响最近邻近节点

* 缺点:还是具有数据迁移
  • 虚拟槽分区法

    • 原理:预设虚拟槽,每个槽映射一个数据子集,一般比节点数大

    • 优点:不会发生数迁移

    • 经验:redis-cluster使用的数据分区算法是虚拟槽分区法

redis-cluster架构

架构图
  • 节点之间相互通信,客户端随机连接一个节点
  • 集群中节点共享信息
  • 当客户端访问一个节点拿数据时
    • 数据就在访问节点:直接返回数据给客户端
    • 数据在其他节点:返回信息告诉客户端去哪个节点拿数据(不帮忙拿,只是告诉去哪里拿)
  • 集群中节点是高可用的,但不是依靠sentinel实现的,而是依靠节点之间通信实现的
节点配置
配置项 配置说明
daemonize yes|no 是否以守护线程方式启动
port 端口
dir 工作目录
logfile 日志文件名
dbfilename RDB文件名
cluster-enabled yes|no 是否构建集群
cluster-config-file 集群日志文件名
cluster-require-full-coverage yes|no 是否只有当所有节点都可用时,集群才可用
meet操作
  • 概念:当一个节点A与节点B连接时,由于节点数据共享,所以节点B可以自动连接上与节点A进行连接的节点

  • 命令

    • redis-cli -h 127.0.0.1 -p 7000 cluster meet 127.0.0.1 7001
指派槽
  • 概念:让某个节点负责某个区间哈希值的槽

    节点
    A 0 ~ 5460
    B 5461 ~ 10922
    C 10923 ~ 16383
  • 经验:当集群中未分配完所有的槽(16383)时,节点是不可用的

主从复制
客户端命令
  • 查看当前节点的信息
    • redis-cli -h 127.0.0.1 -p 7000 cluster info
  • 查看当前节点连接了多个其他节点
    • redis-cli -h 127.0.0.1 -p 7000 cluster nodes

官方工具安装

相关推荐
Lu Yao_13 分钟前
Redis 持久化
数据库·redis·缓存
June`19 分钟前
Redis5安装与核心命令详解
数据库·redis·缓存
.格子衫.3 小时前
Spring Boot 原理篇
java·spring boot·后端
多云几多3 小时前
Yudao单体项目 springboot Admin安全验证开启
java·spring boot·spring·springbootadmin
于小汐在咯4 小时前
词根学习笔记 | Agri系列
笔记·学习
霜绛4 小时前
Unity:Json笔记——Json文件格式、JsonUtlity序列化和反序列化
学习·unity·json·游戏引擎
Jabes.yang5 小时前
Java求职面试实战:从Spring Boot到微服务架构的技术探讨
java·数据库·spring boot·微服务·面试·消息队列·互联网大厂
聪明的笨猪猪5 小时前
Java Redis “高可用 — 主从复制”面试清单(含超通俗生活案例与深度理解)
java·经验分享·笔记·面试
兮动人5 小时前
Spring Bean耗时分析工具
java·后端·spring·bean耗时分析工具
MESSIR226 小时前
Spring IOC(控制反转)中常用注解
java·spring