• 分布式缓存——Redis分片集群:
    • 一、分片集群:
      • 1、分片集群特征:
    • 二、散列插槽:
      • 1、散列插槽:
      • 2、总结:
        • 2.1 Redis如何判断某个key应该在哪个实例?
        • 2.2 如何将同一类数据固定的保存在同一个Redis实例?
    • 三、集群伸缩:
      • 1、集群伸缩:
      • 2、添加节点:
    • 四、故障转移:
    • 五、RedisTemplate访问分片集群:

分布式缓存——Redis分片集群:

一、分片集群:

Redis使用主从集群后,虽然解决了高并发读的问题,但是主从的数据同步的性能也需要提升,其中一个提升就是redis点节点的内存不要设置太高,否则RDB的持久化或者是全量同步的时候,就会导致大量的IO操作,降低了性能。

但是单节点的内存降低,这个时候如果要存储海量的数据,又显得无能为力。
而且主从集群解决了高并发读的问题,那如果要高并发的写,又该怎么办?

以上两个问题,就需要使用分片集群来解决。

1、分片集群特征:

  1. 集群中有多个master,每个master保存不同数据
  2. 每个master都可以有多个slave节点
  3. master之间通过ping监测彼此健康状态,因此这些master也充当了哨兵。
  4. 客户端请求可以访问集群任意节点,最终都会被转发到正确节点

二、散列插槽:

1、散列插槽:

节点如果发生变动,散列插槽也会自动进行更新。

散列插槽如何实现 客户端请求可以访问集群任意节点,最终都会被转发到正确节点

  1. Redis会把每一个master节点映射到0~16383共16384个插槽(hash slot)上,查看集群信息时就能看到:
  2. 数据key不是与节点绑定,而是与插槽绑定。redis会根据key的有效部分计算插槽值,分两种情况:
    2.1 key中包含"{}",且“{}”中至少包含1个字符,“{}”中的部分是有效部分
    2.2 key中不包含“{}”,整个key都是有效部分

例如:key是num,那么就根据num计算,如果是{itcast}num,则根据itcast计算。计算方式是利用CRC16算法得到一个hash值,然后对16384取余,得到的结果就是slot值。

2、总结:

2.1 Redis如何判断某个key应该在哪个实例?

将16384个插槽分配到不同的实例
根据key的有效部分计算哈希值,对16384取余
余数作为插槽,寻找插槽所在实例即可

2.2 如何将同一类数据固定的保存在同一个Redis实例?

这一类数据使用相同的有效部分,例如key都以{typeId}为前缀

三、集群伸缩:

1、集群伸缩:

集群必须能够动态地添加节点或者删除节点。

2、添加节点:

redis-cli --cluster提供了很多操作集群的命令,可以通过下面方式查看:
添加节点,需要两部分参数:
new_host:new_port:添加的节点ip和端口
existing_host:existing_port:集群中已经有的节点的ip和端口

默认情况下添加的节点为主节点,如果要让它为从节点,则需要使用参数–cluster-slave和–cluster-master-id

四、故障转移:

分片集群虽然没有单独出来的哨兵,但它也具备故障修复的功能;

五、RedisTemplate访问分片集群:

(四)分布式缓存——Redis分片集群相关推荐

  1. 分布式缓存-Redis分片集群

    一.分片集群结构 主从和哨兵可以解决高可用.高并发读的问题,但是依然有两个问题没有解决: 海量数据存储问题 高并发写的问题 使用分片集群可以解决上述问题,分片集群特征: 集群中有多个 master,每 ...

  2. (分布式缓存)Redis分片集群

    对应的教程视频: 高级篇Day3-04-Redis分片集群_哔哩哔哩_bilibili 一.搭建分片集群 1.集群结构 分片集群需要的节点数量较多,这里我们搭建一个最小的分片集群,包含3个master ...

  3. Docker中搭建redis分片集群,搭建redis哨兵结构,实现springboot中对redis分片集群、哨兵结构的访问,Redis缓存雪崩、缓存击穿处理(非关系型数据库技术课程 第十二周)

    文章目录 一.要求: 二.知识总结 缓存雪崩 解决方案 docker中redis分片集群搭建 配置好配置文件 redis-6380.conf redis-6381.conf redis-6382.co ...

  4. Redis分片集群启动过程分析

    Redis分片集群启动分析 分片集群为6个节点,备份方式AOF和RDB都已经开启 节点启动log分析 1:C 08 May 2023 05:34:52.156 # oO0OoO0OoO0Oo Redi ...

  5. 和你聊聊如何搭建redis分片集群

    摘要:我发现,凡是涉及到大数据存储,好像都得有个横向扩容方案,不管是在应用层实现,还是在数据存储本身实现.Redis作为一个高效的数据缓存,也周到的提供了数据sharding特性,本文就先讲下最基础的 ...

  6. Redis 分片集群搭建

    Redis 分片集群模式 主从和哨兵可以解决高可用.高并发读的问题.但是依然有两个问题没有解决: 海量数据存储问题,单台服务的磁盘存储终究是有瓶颈: master 负责写操作,高并发写情况下,单台 m ...

  7. Docker下搭建Redis分片集群

    分片集群结构 同一台虚拟机中开启6个redis实例,模拟分片集群 IP  PORT 角色 192.168.19.128 7001 master 192.168.19.128 7002 master 1 ...

  8. 使用DockerCompose部署Redis分片集群——整合SpringBoot

    今天来记录一下使用DockerCompose部署Redis分片集群的过程,前面写了几篇关于redis的博客了,这里就不再过多介绍了,直接上配置就好了 version: "3.0"s ...

  9. 阿里面试官:Redis分片集群都不懂?还来面试?

    面试官:聊下Redis的分片集群,先聊 Redis Cluster好咯? 面试官:Redis Cluser是Redis 3.x才有的官方集群方案,这块你了解多少? 候选者:嗯,要不还是从基础讲起呗? ...

最新文章

  1. Go modules基础精进,六大核心概念全解析(下)
  2. proto文件支持继承吗_搞懂 Javascript中this 指向及继承原理
  3. hdu 5909 Tree Cutting——点分治(树形DP转为序列DP)
  4. hdu4533 威威猫系列故事——晒被子
  5. python json 不好用_Python之json使用
  6. python安装多个版本_Mac安装多个python版本
  7. python 字符串不区分大小写_还在吐槽文本字符串难以处理,Python的这个绝活你还不知道
  8. 诗与远方:无题(二十三)
  9. 【报告分享】面向数据流的产品迭代及业务闭环.pdf
  10. [delphi]窗口最大化时怎么才能不要把任务栏盖住
  11. php跳转post,php如何使用post跳转页面
  12. Windows核心编程_PE文件格式详细介绍
  13. 类-描述器-把类对象方法转变为属性方式
  14. python绘制多个散点图_如何利用python把多个散点图画在一张图上:一个案例
  15. 校园二手交易android软件 基于AndroidStudio
  16. 白帽子守护网络安全,高薪酬成大学生就业首选!
  17. linux pwm控制蜂鸣器 滴滴_第七章----pwm蜂鸣器
  18. 慈爱的教育部门被误解了 --- 真正减负令的实施方案探讨
  19. 北漂家乡买房记:6年至少亏了50% 还无法脱手!
  20. COOX基础培训之MTG

热门文章

  1. 关于微信小程序的搭建
  2. pwnable.rk [Toddler‘s Bottle]  5、passcode 详细过程
  3. python库安装方法及下载依赖库
  4. 将页面的table表格导出为excel或者word
  5. 【Excel技能+】快捷键大全,用前看一遍,用时试一遍。
  6. 51单片机考试内容补充
  7. Wordpress主题编辑器漏洞复现
  8. 设置左右上下对齐css,CSS上下左右居中
  9. 手机绝地求生亚服服务器维护,亚服绝地求生维护
  10. 2022年长沙二级建造师建设工程承包法律制度复习题及答案