Redis集群指定主从关系及动态增删节点方式

 更新时间:2024年01月18日 09:57:06   作者:guotianqing  
这篇文章主要介绍了Redis集群指定主从关系及动态增删节点方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
(福利推荐:【腾讯云】服务器最新限时优惠活动,云服务器1核2G仅99元/年、2核4G仅768元/3年,立即抢购>>>:9i0i.cn/qcloud

(福利推荐:你还在原价购买阿里云服务器?现在阿里云0.8折限时抢购活动来啦!4核8G企业云服务器仅2998元/3年,立即抢购>>>:9i0i.cn/aliyun

集群创建

我们常用以下命令创建集群

redis-cli --cluster create 127.0.0.1:7000 127.0.0.1:7001 127.0.0.1:7002 127.0.0.1:7003 127.0.0.1:7004 127.0.0.1:7005 --cluster-replicas 1

这样就创建了一个具有3个主节点和3个从节点的集群。

其中,我们虽然指定了每个主节点都有一个从节点,但哪个是7000的从节点,却是随机分配的,直到集群创建完毕,才能确定是7003、7004还是7005。

但是,有时候,当我们只有3台物理节点时,就想要指定主从关系,从而保证高可用。

而指定主从关系,就需要手动操作了。

指定主从

思路如下

  • 先创建具有三个主节点的集群,没有从节点
  • 使用添加节点的命令添加从节点,这样就可以在添加时指定它们的主节点,建立主从对应关系

具体如下

  • 使用以下命令创建主节点:
redis-cli --cluster create 127.0.0.1:7000 127.0.0.1:7001 127.0.0.1:7002 --cluster-replicas 0
  • 增加从节点:
redis-cli --cluster add-node 127.0.0.1:7003 127.0.0.1:7000 --cluster-slave --cluster-master-id ***************

其中:

  • slave 表示要添加从节点
  • cluster-master-id 要添加到哪一个主节点,id是*****
  • 127.0.0.1:7003 要添加的从节点
  • 127.0.0.1:7000 原集群中任意节点

ok,这样添加完后得到的就是指定的想要的节点架构。

动态增删节点

增加主节点

redis-cli --cluster add-node 127.0.0.1:7008 127.0.0.1:7000

其中:

127.0.0.1:7008 要向集群添加新的节点127.0.0.1:7000 原集群中任意节点

这里,节点已经加入集群,但:

由于它还没有分配到 hash slots,所以它还没有数据由于它是还没有 hash slots的主节点,所以它不会参与到从节点升级到主节点的选举中

此时,执行 resharding 指令来为它分配 hash slots,这会进入交互式命令行,由用户输入相关信息:

redis-cli --cluster reshard 127.0.0.1:7000

只需要指定一个节点,redis会自动发现其他节点。

How many slots do you want to move (from 1 to 16384)?target node id?from what nodes you want to take those keys?

  • 第一个问题需要需要填写,如1000.
  • 第二个问题可以通过命令查看:redis-cli -p 7000 cluster nodes | grep myself
  • 第三个问题:all,这样会从每个节点上移动一部分 hash slots到新节点

然后开始迁移,每迁移一个key就会输出一个点。

待所有迁移完成后,执行下面的指令查看集群是否正常:

redis-cli --cluster check 127.0.0.1:7000

增加从节点

redis-cli --cluster add-node 127.0.0.1:7006 127.0.0.1:7000 --cluster-slave

该指令与增加主节点语法一致,与添加主节点不同的是,显式指定了是从节点。

这会为该从节点随机分配一个主节点,优先从那些从节点数目最少的主节点中选取。

如果要在添加从节点时就为其指定主节点,需要指定master-id,执行下面的指令(需要替换为真实的id):

redis-cli --cluster add-node 127.0.0.1:7006 127.0.0.1:7000 --cluster-slave --cluster-master-id 3c3a0c74aae0b56170ccb03a76b60cfe7dc1912e

另一种添加从节点的方式是添加一个空的主节点,然后把该节点指定为某个主节点的从节点:

cluster replicate 3c3a0c74aae0b56170ccb03a76b60cfe7dc1912e

删除节点

注意,只能删除从节点或者空的主节点

指令如下:

redis-cli --cluster del-node 127.0.0.1:7000 <node-id>

其中:

  • 127.0.0.1:7000为集群中任意节点
  • node-id为要删除的节点的id

如果想删除有数据的主节点,必须先执行 resharding 把它的数据分配到其他节点后再删除。

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持程序员之家。

相关文章

  • 浅谈Redis在秒杀场景的作用

    浅谈Redis在秒杀场景的作用

    本文主要介绍了浅谈Redis在秒杀场景的作用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-01-01
  • Redis实现验证码发送并限制每日发送次数的示例代码

    Redis实现验证码发送并限制每日发送次数的示例代码

    本文主要介绍了Redis实现验证码发送并限制每日发送次数的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-04-04
  • redis中redisson实现锁自动延时

    redis中redisson实现锁自动延时

    redisson作为分布式锁能够解决分布式的加锁解锁问题,还能够实现锁的设置存活时间以及自动续期,本文主要介绍了redis中redisson实现锁自动延时,感兴趣的可以了解一下
    2024-02-02
  • Redis 通过 RDB 方式进行数据备份与还原的方法

    Redis 通过 RDB 方式进行数据备份与还原的方法

    这篇文章主要介绍了Redis 通过 RDB 方式进行数据备份与还原,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-03-03
  • 虚拟机下的Redis无法访问报错500解决方法

    虚拟机下的Redis无法访问报错500解决方法

    这篇文章主要介绍了虚拟机下的Redis无法访问,报错500解决方法,由于我的redis是在虚拟机下安装的,无法访问redis的原因是因为虚拟机的ip地址和主机不同,文中通过图文结合给出了详细的解决方法,需要的朋友可以参考下
    2024-02-02
  • Redis和springboot 整合redisUtil类的示例代码

    Redis和springboot 整合redisUtil类的示例代码

    这篇文章主要介绍了Redis和springboot 整合redisUtil类的示例代码,本文通过实例图文相结合给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-12-12
  • Redis exists命令bug分析(案例详解)

    Redis exists命令bug分析(案例详解)

    Redis EXISTS 命令用于检查给定 key 是否存在,本文重点给大家介绍Redis exists命令bug分析,感兴趣的朋友跟随小编一起看看吧
    2022-02-02
  • 详解Redis的慢查询日志

    详解Redis的慢查询日志

    这篇文章主要介绍了Redis的慢查询日志的相关资料,帮助大家更好的理解和学习Redis数据库,感兴趣的朋友可以了解下
    2020-08-08
  • Redis中哈希结构(Dict)的实现

    Redis中哈希结构(Dict)的实现

    本文主要介绍了Redis中哈希结构(Dict)的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-06-06
  • redis配置standAlone版的jedisPool示例

    redis配置standAlone版的jedisPool示例

    这篇文章主要为大家介绍了redis配置standAlone版的jedisPool示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-07-07

最新评论

?


http://www.vxiaotou.com