Redis集群

如何从海量数据里快速找到所需

分片:按照某种规则划分数据,分散存储在多个节点上

常规实现方法:按照哈希值与节点数取模来存储

  • 无法实现节点动态增减

一致性Hash算法:

  • 对2^ 32取模,将Hash值空间组织成虚拟圆环
  • 对节点用同方法取Hash
  • 对数据key用同方法算出Hash,算出key在环上的位置
  • 数据key沿环行走,存储在找到的第一台节点中
  • 截屏2021-01-12 上午12.14.33
  • 节点宕机后数据被保存到下一个节点中去
  • 新增节点后数据也会被相应重新保存
缺点
  1. Hash环数据倾斜问题
截屏2021-01-12 上午12.18.33

解决办法:

引入虚拟节点,每个节点计算多个hash,每个hash位置放置一个虚拟节点

截屏2021-01-12 上午12.20.54