前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Redis分片集群

Redis分片集群

作者头像
benym
发布2022-07-14 17:07:05
1.3K0
发布2022-07-14 17:07:05
举报
文章被收录于专栏:后端知识体系后端知识体系

# Redis分片集群

分片集群是将多个Redis主从结构联合起来,每个主从结构具有一个主实例和多个从实例。Redis的分片集群可以在数据量不断增大的情况下进行水平扩容,将键值放在指定的实例中,以此来降低系统对单主节点的依赖,从而提高Redis服务的读写性能。分片集群的结构图如下。

Redis集群
Redis集群
# 分片集群的作用

主从和哨兵可以解决高可用、高并发读的问题。但是依然有两个问题没有解决:

  • 海量数据存储问题
  • 高并发写的问题 哨兵模式本质是依旧是主从模式,在主从模式下我们可以增加slave节点来拓展并发能力,但是没办法扩展能力和存储能力。 使用分片集群可以解决上述问题,分片集群特征:
  • 集群中有多个master,每个master保存不同数据
  • 每个master都可以有多个slave节点
  • master之间通过ping监测彼此健康状态
  • 客户端请求可以访问集群任意节点,最终都会被转发到正确节点
# 散列插槽

Redis会把每一个master节点映射到0~16383共16384个插槽(hash slot)上。哈希槽类似于数据分区,每个键值对都会根据它的 key,被映射到一个哈希槽中,具体执行过程分为两大步:

  • 根据键值对的key,按照CRC16算法计算一个16bit的值
  • 再用16bit值对16384取模,得到0~16383范围内的模数,每个模数代表一个相应编号的哈希槽 每个Redis节点负责处理一部分槽位,假如集群中有master节点ABC,每个节点负责的槽位范围如下:

master节点

处理槽位

A

0-5460

B

5461-10922

C

10923-16383

查看集群信息时就能看到:

Redis集群插槽情况
Redis集群插槽情况

注意,数据key不是与节点绑定,而是与插槽绑定。这样绑定的好处是,当集群发生扩容增加节点或者宕机减少了master节点,Redis能够更加方便的将插槽转移到仍然存活的节点上,数据跟随插槽转移,使得我们能够找到原本数据所在的位置。Redis会根据key的有效部分计算插槽值,分两种情况:

  • key中包含"{}",且"{}"中至少包含1个字符,"{}"中的部分是有效部分
  • key中不包含"{}",整个key都是有效部分

第一种情况可以应对如下问题

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

这一类数据使用相同的有效部分,例如key都以{typeId}为前缀[/card] 例如:key是num,那么就根据num计算,如果是{test}num,则根据test计算。计算方式是利用CRC16算法得到一个hash值,然后对16384取余,得到的结果就是slot值。

Redis集群插槽setget
Redis集群插槽setget

如上图所示,当连接7001节点时,存入num为key的数据正好散列在7001,看起来操作没有变化。当存入a为key的数据时,它散列在了7003节点上,可以看到重定向的消息。此时已经定向到了7003节点,在该节点获取7001节点存入的num时,又会重定向到7001节点。 需要注意的是:集群操作时,需要给redis-cli加上-c参数才可以,如redis-cli -c -p 7001,否则set方法会报如下错误

Redis集群set错误
Redis集群set错误
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-01-26,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • # Redis分片集群
    • # 分片集群的作用
      • # 散列插槽
      相关产品与服务
      云数据库 Redis
      腾讯云数据库 Redis(TencentDB for Redis)是腾讯云打造的兼容 Redis 协议的缓存和存储服务。丰富的数据结构能帮助您完成不同类型的业务场景开发。支持主从热备,提供自动容灾切换、数据备份、故障迁移、实例监控、在线扩容、数据回档等全套的数据库服务。
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档