集群:
是一个提供多个Redis(分布式)节点间共享数据的程序集。
集群部署
Redis 集群的键空间被分割为 16384 hash个槽(slot), 集群的最大节点数量也是 16384 个
关系:cluster>node>slot>key

分片:
Redis Cluster在设计中没有使用一致性哈希(Consistency Hashing),而是使用数据分片引入哈希槽(hash slot)来实现;

一个 Redis Cluster包含16384(0~16383)个哈希槽,存储在Redis Cluster中的所有键都会被映射到这些slot中,

集群中的每个键都属于这16384个哈希槽中的一个,集群使用公式slot=CRC16(key)/16384来计算key属于哪个槽,其中CRC16(key)语句用于计算key的CRC16 校验和。

按照槽来进行分片,通过为每个节点指派不同数量的槽,可以控制不同节点负责的数据量和请求数.

当前集群有3个节点,槽默认是平均分的:
节点 A (6381)包含 0 到 5499号哈希槽.
节点 B (6382)包含5500 到 10999 号哈希槽.
节点 C (6383)包含11000 到 16383号哈希槽.
这种结构很容易添加或者删除节点. 比如如果我想新添加个节点D, 我需要从节点 A, B, C中得部分槽到D上. 如果我像移除节点A,需要将A中得槽移到B和C节点上,然后将没有任何槽的A节点从集群中移除即可. 由于从一个节点将哈希槽移动到另一个节点并不会停止服务,所以无论添加删除或者改变某个节点的哈希槽的数量都不会造成集群不可用的状态.

数据迁移
数据迁移可以理解为slot(槽)和key的迁移,这个功能很重要,极大地方便了集群做线性扩展,以及实现平滑的扩容或缩容。

现在要将Master A节点中编号为1、2、3的slot迁移到Master B节点中,在slot迁移的中间状态下,slot 1、2、3在Master A节点的状态表现为MIGRATING(迁移),在Master B节点的状态表现为IMPORTING(入口)。

此时并不刷新node的映射关系

IMPORTING状态

被迁移slot 在目标Master B节点中出现的一种状态,准备迁移slot从Mater A到Master B的时候,被迁移slot的状态首先变为IMPORTING状态。

键空间迁移

键空间迁移是指当满足了slot迁移前提的情况下,通过相关命令将slot 1、2、3中的键空间从Master A节点转移到Master B节点。此时刷新node的映射关系。

复制&高可用:
集群的节点内置了复制和高可用特性。

特点:1、节点自动发现
2、slave->master 选举,集群容错
3、Hot resharding:在线分片
4、基于配置(nodes-port.conf)的集群管理
5、客户端与redis节点直连、不需要中间proxy层.
6、所有的redis节点彼此互联(PING-PONG机制),内部使用二进制协议优化传输速度和带宽.

redis Hash槽相关推荐

  1. 一致性hash和redis中hash槽的区别

    一致性hash主要用于分布式系统中,用于解决数据选择节点存储.选择节点访问.增删节点后数据的迁移和重分布问题.redis集群并没有使用一致性hash,而是使用了hash槽来解决数据分配的问题. 一致性 ...

  2. Redis集群Hash槽分配异常 CLUSTERDOWN Hash slot not served的解决方式

    在搭建Redis5.x版本的集群环境出现各节点无法互相发现与Hash槽分配异常 CLUSTERDOWN Hash slot not served的情况 在Linux同一台服务器下搭建伪集群-- 127 ...

  3. docker 安装redis集群配置3主3从,实现hash槽分配存储数据

    目录 一.docker集群安装 1.分别在宿主机的/docker/redis下创建每个节点数据同步的目录 2.执行容器启动命令 3.执行命令参数解释: 4.集群节点不够提示:提示需要至少3个maste ...

  4. Redis 一致性hash、hash槽

    参考:又被微信问懵了! redis系列之--一致性hash算法_诸葛小猿-CSDN博客_redis一致性hash Redis缓存问题(缓存穿透.缓存击穿.缓存雪崩.hash一致性问题及数据倾斜问题)_ ...

  5. 分布式缓存原理——一致性hash算法(hash环)、Hash槽

    一.一致性哈希算法:一种特殊的哈希算法,目前主要应用于分布式缓存当中,可以有效地解决分布式存储结构下动态增加和删除节点所带来的问题. 一致性Hash算法是对2^32取模,2^32个点组成的圆环称为Ha ...

  6. 分布式路由策略(Hash取余,一致性Hash,Hash槽)

    Hash取余 集群场景下,使用Hash(key)/N的方式将请求分配到某一个服务器上,N为服务器数量.存在的问题,当增加或者减少集群节点的时候,Hash(key)/N的结果将发生变化,导致数据大量读不 ...

  7. 浅析一致性hash和hash槽

    通过本文将收获如下: 文章中有一些补充知识点,不想了解可以跳过 为什么Redis Cluster的Hash Slot 是16384? 什么是hash(概念) 什么是一致性hash 什么是hash sl ...

  8. Redis学习第三课:Redis Hash类型及操作

    Redis hash是一个string类型的field和value的映射表.它的添加.删除操作都是O(1)(平均).hash特别适用于存储对象.相较于对象的每个字段存在单个string类型.将一个对象 ...

  9. Redis Hash 类型操作及常用命令

    七个原则 Redis 是一个操作数据结构的语言工具,它提供基于 TCP 的协议以操作丰富的数据结构.在 Redis 中,数据结构这个词的意义不仅表示在某种数据结构上的操作,更包括了结构本身及这些操作的 ...

最新文章

  1. xmind 模板_xmind模板打包下载
  2. ai ci ba logon use infomation
  3. Docker 阿里云镜像加速
  4. Mockito框架代码学习调试
  5. 两个日期相差月份 java_Java获取两个指定日期之间的所有月份
  6. 超实用的JavaScript技巧及最佳实践
  7. python 百度网盘下载提速_教你如何百度网盘的提高下载速度?
  8. 【微收藏】FourShadows.js – 时间感知的算法驱动的图标阴影JS库
  9. Tomcat基础教程(三)
  10. 6-5.添加HLSL顶点着色
  11. 微擎不现实数组_Java这个类,大概就和现实中吃饭一样常见
  12. PC端的TIM无法打开?打开“QPCore Service”服务 ,访问被拒?关掉杀毒软件
  13. javafx-更改程序图标
  14. 洛谷P1938 [USACO09NOV]找工就业Job Hunt(spfa) 题解
  15. 彩蛋-管理员root@‘locahost‘ 密码丢失,处理方案。
  16. php8网站,教你从零搭建php8环境
  17. mysql 参数 1_警告:mysql_result()期望参数1为资源,给定布尔值[重复]
  18. DMAC计算机组成原理,计算机组成原理
  19. 测绘遥感地信 国内外期刊大全
  20. 修改db_create_online_log_dest_1

热门文章

  1. 传统公司部署OpenStack(t版)简易介绍(八)——Dashboard模块部署
  2. python ascii转utf8_ascii 转换为 utf-8
  3. css 缩放_【开发小技巧】06—如何使用CSS在鼠标悬停时缩放图像?
  4. html在表单左上角显示文字,js+css实现增加表单可用性之提示文字
  5. html5 jquery paint plugin,制作高质量的JQuery Plugin 插件的方法
  6. 嵌入式linux开发考试题目,练一练!3道经典嵌入式Linux面试题,答案在文末。
  7. 余弦信号频谱表达式_2019年清华828信号与系统试题回忆
  8. 计算机软件429修复工具,Soft4Boost Any Uninstaller
  9. 人工智能tensorflow图的可视化
  10. artDiaLog弹出插件