一、快速回顾搭建RedisCluster集群

1.cash槽

redis扩容和concurrentHashmap的扩容 redis扩容原理_f5


2. 没有分配卡槽:

redis扩容和concurrentHashmap的扩容 redis扩容原理_服务器_02

/usr/redis/bin/redis-cli --cluster create 192.168.212.163:7000 192.168.212.163:7001 192.168.212.163:7002 192.168.212.163:7003 192.168.212.163:7004 192.168.212.163:7005 --cluster-replicas 1

(建议最好使用服务器的ip地址搭建)

redis扩容和concurrentHashmap的扩容 redis扩容原理_服务器_03

redis扩容和concurrentHashmap的扩容 redis扩容原理_redis_04

查看key值的位置

redis扩容和concurrentHashmap的扩容 redis扩容原理_redis_05


redis扩容和concurrentHashmap的扩容 redis扩容原理_redis_06

二、RedisCluster快速实现扩容原理

1.可以存放 无数个key 。一个卡槽 可以存放多个key, 类似数据库,一个表中,可以存放无数条数据。

redis扩容和concurrentHashmap的扩容 redis扩容原理_f5_07

redis扩容和concurrentHashmap的扩容 redis扩容原理_redis_08

三、演示一个搭建RedisCluster错误场景

1.手动启动 7706,7007
/usr/redis/bin/redis-server /usr/rediscluster/redis7006/redis.conf
/usr/redis/bin/redis-server /usr/rediscluster/redis7007/redis.conf

2.新增一个主节点 为7006

/usr/redis/bin/redis-cli --cluster add-node 192.168.212.163:7006 192.168.212.163:7000 任意 已经 存在的节点。

redis扩容和concurrentHashmap的扩容 redis扩容原理_服务器_09


dump没有 指定端口号(只会在伪集群出现。demp.rdb文件 没有作区分)

redis扩容和concurrentHashmap的扩容 redis扩容原理_f5_10


redis扩容和concurrentHashmap的扩容 redis扩容原理_f5_11


杀掉7007 7007的进程 再来一次

redis扩容和concurrentHashmap的扩容 redis扩容原理_f5_12

redis扩容和concurrentHashmap的扩容 redis扩容原理_服务器_13


3.新增一个从节点 为7007

/usr/redis/bin/redis-cli --cluster add-node 192.168.212.163:7007 192.168.212.163:7000 --cluster-salve --cluster-master-id 5d94171eb34ed4396bf5b9db8efaab4d96d0cf10

redis扩容和concurrentHashmap的扩容 redis扩容原理_f5_14

四、以正确的方式搭建RedisCluster集群

1.每一个dump.rdb都做区分

redis扩容和concurrentHashmap的扩容 redis扩容原理_服务器_15


redis扩容和concurrentHashmap的扩容 redis扩容原理_服务器_16


redis扩容和concurrentHashmap的扩容 redis扩容原理_服务器_17


redis扩容和concurrentHashmap的扩容 redis扩容原理_f5_18


1.新增一个主节点 为7006/usr/redis/bin/redis-cli --cluster add-node 192.168.212.163:7006 192.168.212.163:7000

新增节点默认是master节点。但是没有 卡槽

redis扩容和concurrentHashmap的扩容 redis扩容原理_服务器_19

2.新增一个从节点 为7007

/usr/redis/bin/redis-cli --cluster add-node 192.168.212.163:7007 192.168.212.163:7000 --cluster-salve --cluster-master-id 5d94171eb34ed4396bf5b9db8efaab4d96d0cf10 master的id

redis扩容和concurrentHashmap的扩容 redis扩容原理_f5_20

五、RedisCluster快速的实现卡槽扩容

redis扩容和concurrentHashmap的扩容 redis扩容原理_服务器_21


现在:

redis扩容和concurrentHashmap的扩容 redis扩容原理_redis_22


原来:

redis扩容和concurrentHashmap的扩容 redis扩容原理_redis_23

redis扩容和concurrentHashmap的扩容 redis扩容原理_redis_24

六、master节点宕机之后重新实现选举

7007是7006的主从节点

1.连接到7006

redis扩容和concurrentHashmap的扩容 redis扩容原理_redis_25


2.当7006宕机之后:

redis扩容和concurrentHashmap的扩容 redis扩容原理_服务器_26


redis扩容和concurrentHashmap的扩容 redis扩容原理_f5_27


3.连接到7007

redis扩容和concurrentHashmap的扩容 redis扩容原理_f5_28


4.查看当前节点变化:

cluster node

redis扩容和concurrentHashmap的扩容 redis扩容原理_服务器_29


7007变成master节点

6. 启动7006

redis扩容和concurrentHashmap的扩容 redis扩容原理_redis_30


7. 7006变成7007的从节点

redis扩容和concurrentHashmap的扩容 redis扩容原理_redis_31

七、RedisCluster快速的实现缩容

  1. 不要最后一个节点 卡槽需要还原给存在的节点

    2.Redis槽位缩容
    /usr/redis/bin/redis-cli --cluster reshard 192.168.212.163:7000 --cluster-from 5d94171eb34ed4396bf5b9db8efaab4d96d0cf10 --cluster-to 511058958a3b80dd600e060c2500050c6c5a02ab --cluster-slots

redis扩容和concurrentHashmap的扩容 redis扩容原理_redis_32


redis扩容和concurrentHashmap的扩容 redis扩容原理_服务器_33

八、JedisCluster支持集群原理

redis扩容和concurrentHashmap的扩容 redis扩容原理_服务器_34


redis扩容和concurrentHashmap的扩容 redis扩容原理_服务器_35


不支持重定向

redis扩容和concurrentHashmap的扩容 redis扩容原理_redis_36


redis扩容和concurrentHashmap的扩容 redis扩容原理_redis_37