Redis Cluster集群使用与原理

本文详细介绍了Redis Cluster的使用与原理,包括为何需要集群、数据分布的三种方式(顺序分区、一致性哈希、虚拟槽分区)、集群搭建过程、节点配置、故障转移机制以及客户端路由策略。此外,还探讨了Redis Cluster的常见问题,如带宽消耗、集群倾斜等,并提供了优化建议。
摘要由CSDN通过智能技术生成

为什么需要集群

  • 并发量QPS较大
  • 数据量较大

高并发和大数据量时, 单机无法满足,这个时候就需要使用分布式

数据分布

分布式数据库-数据分区

分布式数据库-数据分区

  • 顺序分区
  • 哈希分区

顺序分区与哈希分区

顺序分区和哈希分区对比 :

数据分布对比

哈希分区

节点取余(不建议)

  • 客户端分片 : 哈希 + 取余

  • 节点伸缩 : 数据节点关系变化, 导致数据迁移

  • 迁移数量和添加节点数量有关 : 建议翻倍扩容

    节点取余

一致性哈希

  • 客户端分片 : 哈希 + 顺时针(优化取余)
  • 节点伸缩 : 值影响临近节点, 但还是有数据迁移
  • 翻倍伸缩 : 保证最小迁移数据和负载均衡

1535588493216

虚拟槽分区

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

  • 良好的哈希函数 : 例如CRC16

  • 服务端管理节点, 槽, 数据 : 例如Redis Cluster

    虚拟槽分配

集群搭建

基本架构

单机架构 :

单机架构

分布式架构 :

分布式架构

Redis Cluster架构

  • 节点

  • meet : 节点之间进行通信, 所有节点共享信息

    meet操作

  • 指派槽

    指派槽

    客户端与指派槽 :

    客户端与指派槽

    对上面两幅图进行一下说明 :

    1. 将16384个槽分别分配给A, B, C三个节点
    2. 客户端访问时, 根据哈希对槽进行取余,就可以获取到数据存放的槽, 同时也能获取到负责这个数据槽对应的节点
  • 复制

    • 主从复制
    • 高可用
    • 分片

Redis Cluster安装

原生命令安装

  1. 配置开启节点

port ${port}

daemonize yes

dir 工作目录

dbfilename “dump-${port}”.rdb
logfile “\${port}.log

cluster-enabled yes : 配置是否开启cluster

cluster-config-file nodes-${port}.conf : 指定cluster配置文件, 节点启动之后会生成这个文件

  1. meet

    redis-cli -h 127.0.0.1 -p 7000 cluster meet 127.0.0.1 7001

    表示从7000 meet 7001

  2. 指派槽

    cluster addslots slot[slot…]

    redis-cli -h 127.0.0.1 -p 7000 cluster addslots {0…5461}, 将0-5461的槽分配给7000节点

  3. 设置主从

    cluster replicate node-id

    redis-cli -h 12

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值