分布式缓存

文章目录

  • 微服务框架
  • 分布式缓存
  • 44 Redis 分片集群
  • 44.3 集群伸缩
  • 44.3.1 添加一个节点到集群


44 Redis 分片集群

44.3 集群伸缩
44.3.1 添加一个节点到集群

redis-cli --cluster提供了很多操作集群的命令,可以通过下面方式查看:

springcloud redis sentinel配置 springcloud redis集群_分布式

比如,添加节点的命令:

springcloud redis sentinel配置 springcloud redis集群_Redis_02

试试

【案例】向集群中添加一个新的master节点,并向其中存储 num = 10

需求:

  • 启动一个新的redis实例,端口为7004
  • 添加7004到之前的集群,并作为一个master节点
  • 给7004节点分配插槽,使得num这个key可以存储到7004实例

先来一个新的 Redis 实例

先开个 端口 7004 和 17004

springcloud redis sentinel配置 springcloud redis集群_分布式_03

创建实例

springcloud redis sentinel配置 springcloud redis集群_Redis_04

OK,配置就准备好了,

运行 redis-server 7004/redis.conf

springcloud redis sentinel配置 springcloud redis集群_缓存_05

这样就成功启动了

添加7004 到集群中

redis-cli --cluster add-node 175.27.194.41:7004 175.27.194.41:7001

springcloud redis sentinel配置 springcloud redis集群_分布式_06

查一下 redis-cli -p 7001 cluster nodes

springcloud redis sentinel配置 springcloud redis集群_插槽_07

OK,确实加进来了,但是现在 7004 上面还没有任何的插槽

查一下num 这个key 的插槽值

springcloud redis sentinel配置 springcloud redis集群_分布式_08

OK, 是2765 ,意思就是说 我现在只要把 2765 这个插槽分配到 7004 节点

就可以让num 回到7004 节点

【插槽分配】

看看帮助

springcloud redis sentinel配置 springcloud redis集群_插槽_09

这就是分配插槽的命令

直接试试

redis-cli --cluster reshard 175.27.194.41:7001

springcloud redis sentinel配置 springcloud redis集群_redis_10

你想移动多少个插槽 3000 个

springcloud redis sentinel配置 springcloud redis集群_缓存_11

接收这些插槽的 ID 是什么?

springcloud redis sentinel配置 springcloud redis集群_分布式_12

就是这一串

springcloud redis sentinel配置 springcloud redis集群_redis_13

插槽从哪里作为数据源去拷贝 7001 的ID

springcloud redis sentinel配置 springcloud redis集群_缓存_14

直接done 结束

springcloud redis sentinel配置 springcloud redis集群_分布式_15

要不要将这 3000 个插槽移动过去 yes

springcloud redis sentinel配置 springcloud redis集群_redis_16

这就在移动 了

springcloud redis sentinel配置 springcloud redis集群_插槽_17

OK,移动完成

再次查看集群信息

springcloud redis sentinel配置 springcloud redis集群_redis_18

没毛病,7004 有了0-2999 的3000 个插槽,7001 只剩下3000 - 5460 了

现在来看看num 在哪儿

springcloud redis sentinel配置 springcloud redis集群_Redis_19

妙啊,这样就跳到 7004 了,现在num 就已经存在7004 的节点上了

【黑马老师留的作业:删除7004 这个节点】

springcloud redis sentinel配置 springcloud redis集群_redis_20

我盲猜就是这个了

直接试试

springcloud redis sentinel配置 springcloud redis集群_缓存_21

好家伙,说 7004 不是空的,要我先重新分配一下插槽再 试

OK,先把插槽还给7001

springcloud redis sentinel配置 springcloud redis集群_插槽_22

springcloud redis sentinel配置 springcloud redis集群_缓存_23

等待 移动完成

springcloud redis sentinel配置 springcloud redis集群_缓存_24

OK,移动完成

查看集群信息

springcloud redis sentinel配置 springcloud redis集群_Redis_25

现在7004 一个插槽都没有了

再试一次

springcloud redis sentinel配置 springcloud redis集群_分布式_26

应该是成功了

springcloud redis sentinel配置 springcloud redis集群_缓存_27

这样就没有7004 了, 删除成功