IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> redis集群是怎么一回事,以及如何去做集群中数据的迁移 -> 正文阅读

[大数据]redis集群是怎么一回事,以及如何去做集群中数据的迁移

福利这是我的个人IT资源网站,所有资源都免费,注册登录后就可以看到密码,需要什么大家尽情选取!

今天来说一说redis集群,redis集群主要解决的就是单体存储的限制,通过集群的方式扩大redis的存储,比如我有三台物理机,那么我可以在每一台部署一个redis服务,将三台redis服务连接成一个集群,那么集群整体的存储就扩大了三倍,下边说一些关于redis集群的知识和一些注意的点

  1. 首先搭建redis集群,需要将redis的配置文件中的cluster-mode打开,以集群模式运行,每个节点要注意开放端口,这里要开放两个端口,一个是正常redis服务访问的端口,另一个就是集群总线的通讯端口,一般是在服务端口前面加个1,例如服务端口为6379则集群总线的通讯端口为16379,当我们将各个节点启动后,需要把它们串联起来才能形成集群,串联的任务在一个节点中就能完成,这个过程就是握手的过程,当握手成功后,各个节点的信息都会共享,比如节点A握手节点B,节点A握手节点C,那么节点B和节点C的信息自然就共享了,不需要再次握手,就好比公司成员,我招了两个人,那么他们互相也就成了同事,如下图
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    以集群模式登录客户端:redis-cli -c
    节点握手命令:cluster meet 握手对方IP 握手对方端口,成功返回OK
    查看集群几点信息命令:cluster nodes
    在这里插入图片描述

  2. 握手成功后,其实此时集群还未工作,因为只是互相认识了,还没分配具体负责的内容,那么接下来需要各自接手工作,就是分配槽,槽就相当于储物格,总共有16384个槽,那么不管集群的总的存储有多大,槽的总数就是16384,只是随着集群节点的存储大小改变,以及节点槽的数量,分摊到每个槽的存储大小也随之改变,如下图,四个节点最后的数目就是各自分配的槽的数量
    在这里插入图片描述
    分配槽的命令:redis-cli cluster addslots {0…5000}(重点:中间是两个小数点,开头是起始槽下表,末尾是终止槽下标,总的就是0到16383)

  3. 将16384个槽分配好后,输入命令:cluster info,会看到此时集群就准备好了,当我们在各个节点存储数据时,会通过算法将数据存在每个槽上
    在这里插入图片描述

  4. 那么我们后期想要增加节点怎么办呢,增加完节点怎么将我们已分配好的16384个槽分一部分给的新的节点呢,这个在redis客户端无法完成了,必须使用redis的集群管理工具redis-trib去实现槽重新分片,可以将一个节点上的槽或者整个集群的槽迁移到新的节点上,这个redis-trip工具是在redis源码的src下文件夹,redis源码可以直接去git上下载,这个程序运行需要依赖ruby环境,具体安装可以上网查询
    在这里插入图片描述
    安装好环境后,找到redis-trib程序,先创建集群,就是将集群让redis-trib连接上,可以通讯,这里说到通讯需要说明一下,要想用redis-trip管理,节点不能设置密码,不然redis-trib连接不上,通讯失败一般有几个点,首先就是端口开放,集群模式下要开放两个端口,看上方的1,其次就是ip,如果protected-mode是yes,且不在同一台机器,那么bind的ip需要设置成0.0.0.0才能访问,最后就是看是否设置了密码,redis-trib创建集群的命令为./redis-trib.rb create 节点IP1:节点端口1 节点IP2:节点端口2 节点IP3:节点端口3 节点IPn:节点端口n
    在这里插入图片描述
    当我们记不住命令的时候,都可以通过help来查看,例如查看集群相关命令,在redis客户端命令行输入cluster help即可
    创建好后,我们通过一个节点去查看的命令是./redis-trib.rb check 节点IP:节点端口,如下图
    在这里插入图片描述
    可以看到四个节点连接状态都OK,然后16384个槽都已分配,其中6376是我新增的节点,并将6377的槽转移了200个到6376,大家可以观察一下上图

那么重新下边我再执行一次,再将6377的200个槽迁移到6376
迁移槽的命令为:./redis-trib.rb reshard 节点IP:节点端口(这个节点是集群中任意一个即可,用来获取集群信息)

在这里插入图片描述
在这里插入图片描述
但是第一次很容易失败,容易出现下图情况
在这里插入图片描述
当再此分片时就无法分片,必须处理一下10202,那么我们6376节点看一下10202到底成功迁移了吗
在这里插入图片描述
我们可以看到并没有,是一个指向的中间状态,那么我们可以先删除10202,然后再分配给6366
删除槽:redis-cli -p 6376 cluster delslots 10202
在这里插入图片描述
分配槽:redis-cli -p 6376 cluster addslots 10202
在这里插入图片描述
这样就解决了第一次分配槽的问题,再此进行迁移
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
然后执行完没有出错,我们再查看一下槽的信息,如下图红框内,将201个槽已经从6377迁移到了6376,不管是空槽还是槽中有数据,都会迁移过去
在这里插入图片描述

好了,今天和大家主要说了一些关于redis集群以及通过集群管理工具迁移槽的知识,对于集群管理工具以及槽的命令的更多用法,大家可以通过help指令去查看并更详细地去了解实践,学习是一个枯燥乏味地过程,但也是一个充满收获和喜悦地过程,实践的过程中很容易失败,但是每次失败都是一次宝贵的经验,为成功奠定扎实的基础,失败是成功之母就是这个道理,欢迎大家观看我的文章,并将其中的不足之处指出讨论,互相学习进步?

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2022-02-28 15:36:32  更:2022-02-28 15:37:08 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 11:24:08-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码