redis集群操作

news2024/12/27 13:34:31

Redis集群

      • 1 集群
      • 2 集群架构图
      • 3 集群细节
      • 4 集群搭建
        • 4.1.创建集群
        • 4.2.查看集群状态
        • 4.3.添加主节点
        • 4.4.添加从节点
        • 4.5.删除副本节点
        • 4.6.集群在线分片

1 集群

Redis在3.0后开始支持Cluster(模式)模式,目前redis的集群支持节点的自动发现,支持slave-master选举和容错,支持在线分片(sharding shard )等特性。

2 集群架构图

在这里插入图片描述

3 集群细节

- 所有的redis节点彼此互联(PING-PONG机制),内部使用二进制协议优化传输速度和带宽.
- 节点的fail是通过集群中超过半数的节点检测失效时才生效. 
- 客户端与redis节点直连,不需要中间proxy层.客户端不需要连接集群所有节点,连接集群中任何一个可用节点即可
- redis-cluster把所有的物理节点映射到[0-16383]slot上,cluster 负责维护node<->slot<->value

在这里插入图片描述

4 集群搭建

判断一个是集群中的节点是否可用,是集群中的所用主节点选举过程,如果半数以上的节点认为当前节点挂掉,那么当前节点就是挂掉了,所以搭建redis集群时建议节点数最好为奇数。
搭建集群至少需要三个主节点,三个从节点,至少需要6个节点

  1. 准备环境安装ruby以及redis集群依赖

    yum install -y ruby rubygems
    gem install redis-xxx.gem
    
  2. 在一台机器创建7个目录

    [root@localhost ~]# mkdir 7000 7001 7002 7003 7004 7005 7006
    
  3. 每个目录复制一份配置文件

    [root@localhost ~]# cp redis-7.0.0/redis.conf 7000/
    [root@localhost ~]# cp redis-7.0.0/redis.conf 7001/
    [root@localhost ~]# cp redis-7.0.0/redis.conf 7002/
    [root@localhost ~]# cp redis-7.0.0/redis.conf 7003/
    [root@localhost ~]# cp redis-7.0.0/redis.conf 7004/
    [root@localhost ~]# cp redis-7.0.0/redis.conf 7005/
    [root@localhost ~]# cp redis-7.0.0/redis.conf 7006/
    
  4. 修改不同目录配置文件

    port 	6379 .....                		 //修改端口
    bind  0.0.0.0                   		 //开启远程连接
    cluster-enabled  yes 	        			 //开启集群模式
    cluster-config-file  nodes-port.conf //集群节点配置文件
    cluster-node-timeout  5000      	   //集群节点超时时间
    appendonly  yes   		               //开启AOF持久化
    
  5. 指定不同目录配置文件启动七个节点

    [root@localhost bin]# ./redis-server  /root/7000/redis.conf
    [root@localhost bin]# ./redis-server  /root/7001/redis.conf
    [root@localhost bin]# ./redis-server  /root/7002/redis.conf
    [root@localhost bin]# ./redis-server  /root/7003/redis.conf
    [root@localhost bin]# ./redis-server  /root/7004/redis.conf
    [root@localhost bin]# ./redis-server  /root/7005/redis.conf
    [root@localhost bin]# ./redis-server  /root/7006/redis.conf
    
  6. 查看进程

    [root@localhost bin]# ps aux|grep redis 
    

4.1.创建集群

  1. 复制集群操作脚本到bin目录中

    [root@localhost bin]# cp /root/redis-7.0.0/src/redis-trib.rb .
    
  2. 创建集群

    ./redis-trib.rb create --replicas 1 192.168.202.205:7000 192.168.202.205:7001 192.168.202.205:7002 192.168.202.205:7003 192.168.202.205:7004 192.168.202.205:7005 192.168.202.205:7006
    
  3. 集群创建成功出现如下提示

    [OK] ALL XXX slots covered.
    

4.2.查看集群状态

  1. 查看集群状态 check [原始集群中任意节点] [无]
 ./redis-trib.rb check 192.168.202.205:7000
  1. 集群节点状态说明
    • 主节点
      主节点存在hash slots,且主节点的hash slots 没有交叉
      主节点不能删除
      一个主节点可以有多个从节点
      主节点宕机时多个副本之间自动选举主节点

    • 从节点
      从节点没有hash slots
      从节点可以删除
      从节点不负责数据的写,只负责数据的同步

4.3.添加主节点

  1. 添加主节点 add-node [新加入节点] [原始集群中任意节点]
    ./redis-trib.rb  add-node 192.168.1.158:7006  192.168.1.158:7005
    - 注意:
     1.该节点必须以集群模式启动
     2.默认情况下该节点就是以master节点形式添加
    

4.4.添加从节点

  1. 添加从节点 add-node --slave [新加入节点] [集群中任意节点]
    ./redis-trib.rb  add-node --slave 192.168.1.158:7006 192.168.1.158:7000
    - 注意:
     当添加副本节点时没有指定主节点,redis会随机给副本节点较少的主节点添加当前副本节点
    
  2. 为确定的master节点添加主节点 add-node --slave --master-id master节点id [新加入节点] [集群任意节点]
    ./redis-trib.rb  add-node --slave --master-id 3c3a0c74aae0b56170ccb03a76b60cfe7dc1912e    127.0.0.1:7006  127.0.0.1:7000
    

4.5.删除副本节点

  1. 删除节点 del-node [集群中任意节点] [删除节点id]
    ./redis-trib.rb  del-node 127.0.0.1:7002 0ca3f102ecf0c888fc7a7ce43a13e9be9f6d3dd1
    - 注意:
     1.被删除的节点必须是从节点或没有被分配hash slots的节点
    

4.6.集群在线分片

  1. 在线分片 reshard [集群中任意节点] [无]
    ./redis-trib.rb  reshard  192.168.1.158:7000
    

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/115520.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Nmap系统扫描实战

今天继续给大家介绍渗透测试相关知识&#xff0c;本文主要内容是Nmap系统扫描实战。 免责声明&#xff1a; 本文所介绍的内容仅做学习交流使用&#xff0c;严禁利用文中技术进行非法行为&#xff0c;否则造成一切严重后果自负&#xff01; 再次强调&#xff1a;严禁对未授权设备…

解决Win系统cad激活安装失败问题,AutoCad 2022 中文/英文正式详细安装教程

Autodesk AutoCAD 2022简称“cad 2022”是一款功能强大的CAD三维绘图辅助设计软件。autocad 2022适用于二维绘图、详细绘制、设计文档和基本三维设计&#xff0c;广泛应用于机械设计、工业制图、工程制图、土木建筑、装饰装潢、服装加工等多个行业领域。CAD2022新特征&#xff…

线径看板帮助电线电缆厂提高生产效率的工作原理

当今&#xff0c;市场上出现了越来越多的电线电缆品牌&#xff0c;电线电缆市场的竞争越来越激烈&#xff0c;电线厂家稍有不慎&#xff0c;出现了产品不规范、不合格的异常情况&#xff0c;就很可能会被市场淘汰&#xff0c;被消费者所抛弃。那么&#xff0c;要怎样才能够保障…

MVC(Model,View,Controller)

MVC是指Model&#xff08;模型层&#xff0c;数据&#xff09;&#xff0c;View&#xff08;视图层),Controller(控制层&#xff09; 核心是DispathcherServlet&#xff08;一个Servlet&#xff09; (1) 客户端的请求提交给DispathcherServlet (2&#xff09;DispathcherServl…

【动态规划篇】斐波那契数列拆分词句三角矩阵

&#x1f320;作者&#xff1a;阿亮joy. &#x1f386;专栏&#xff1a;《数据结构与算法要啸着学》 &#x1f387;座右铭&#xff1a;每个优秀的人都有一段沉默的时光&#xff0c;那段时光是付出了很多努力却得不到结果的日子&#xff0c;我们把它叫做扎根 目录&#x1f449;…

基于Java(JSP+Servlet)+Mysql实现的(Web)简易的工资管理系统【100010062】

1.问题描述 一个公司下分为若干部门&#xff0c;每个部门有若干职员和经理&#xff0c;每个部门经销若干种商品。工资由基本工资、产品销售业绩奖、若干种保险的扣除等组成。其中的销售业绩奖按以下方式设计&#xff1a;职员按其完成额的 5% 提成&#xff0c;经理按其部门完成…

string.IsNullOrEmpty和string.IsNullOrWhiteSpace的区别

string.IsNullOrEmpty和string.IsNullOrWhiteSpace 本人一直使用的是string.IsNullOrEmpty方法来判断字符串是否为空. 在插件中发现另外一种写法&#xff1a; string s1 null; string s2 string.Empty; string s3 ""; strin…

精通MyBatis原理,看这两篇就够了!(二)

本文是关于MyBatis源码的第二篇&#xff0c;解读了MyBatis的核心执行SQL流程&#xff0c;对源码做了详细注释。内容较长&#xff0c;推荐电脑阅读。点击上方“后端开发技术”&#xff0c;选择“设为星标” &#xff0c;优质资源及时送达执行阶段流程第一篇文章讲解了Mybatis启动…

【jdk11+jprofiler 11进行java程序性能调优案例之--内存溢出原因分析】

1.安装jprofiler jprofiler_windows-x64_11_0_2.exe 2.使用KeyGen.exe生成注册码然后输入 3.idea中安装jprofiler插件 File-->Setting-->Plugins 搜索jprofiler插件然后安装 4.以一个内存溢出的程序为例子进行分析(一直分配内存&#xff0c;List容器引用着Student导致…

Java创建线程的三种方式

Java创建线程的三种方式 一、通过Thread类的方式进行创建 步骤&#xff1a; 1、创建Thread的子类&#xff0c;重写run方法&#xff0c;run方法就表示线程需要完成的任务 2、创建Thread实例&#xff0c;也就是创建线程对象 3、使用start来启动线程&#xff08;线程启动的唯一方…

显著性分析

选择图 为什么要分Non-parametric & parametric 方法 为了找到更符合数据的分析方法。每个方法有自己的假设&#xff0c;如果违背了结果会不精准。 Sign Test 是一个可以用于任何数据分布情况的pairwise 方法。 检查normality: Sample 数量 < 50,适用 Shapiro-Wilk&am…

【Kotlin 协程】Flow 操作符 ① ( 过渡操作符 | map 操作符 | transform 操作符 | 限长操作符 | take 操作符 )

文章目录一、过渡操作符1、map 操作符2、transform 操作符二、限长操作符 ( take 操作符 )一、过渡操作符 过渡操作符 相关概念 : 转换流 : 使用 过渡操作符 转换 Flow 流 ;作用位置 : 过渡操作符作用 于 流的上游 , 返回 流的下游 ;非挂起函数 : 过渡操作符 不是挂起函数 , 属…

大话JMeter2|正确get参数传递和HTTP如何正确使用

上节课展示了JMeter的基础用法&#xff1a;录制回放功能&#xff0c;断言&#xff0c;聚合报告。但是在无UI下如何进行接口的访问呢&#xff1f;如何正确get参数传递和HTTP如何正确使用。尤其是在无UI下进行接口的访问。小哥哥带着你用漫画来学习JMeter&#xff0c;让你在轻松的…

【MMAsia 2021】Patch-Based Deep Autoencoder for Point Cloud Geometry Compression

文章目录Patch-Based Deep Autoencoder for Point Cloud Geometry Compression压缩流程自编码架构实验结果Patch-Based Deep Autoencoder for Point Cloud Geometry Compression https://arxiv.org/abs/2110.09109 这篇论文使用深度自编码器&#xff0c;提出了一种基于分块&am…

发票识别OCR及查验API接口为企业化解难题

对于当今的现代企业来说&#xff0c;分散的财务管理模式效率不高&#xff0c;管理成本反而相对较高&#xff0c;制约了集团企业发展战略的实施&#xff0c;因而需要建设财务共享模式。一个企业要建成财务共享中心&#xff0c;面临的难题是大量的数据采集和信息处理工作&#xf…

一组类型相同的数据【C 数组】总结

作者 &#xff1a; 会敲代码的Steve 墓志铭&#xff1a;博学笃志 切问静思 前言&#xff1a;本文旨在复习C语言数组章节的知识点、分为以下几个部分&#xff1a; 什么是数组一维数组、一维数组的初始化、一维数组的遍历、冒泡排序。二维数组、二维数组的创建和初始化、二维数…

多功能采集仪VH03接口使用说明

传感器接口 传感器接口须使用设备专门配备的测线&#xff0c;一端为 DB9 一端为用颜色区分的多个鳄鱼夹&#xff0c;线&#xff08;鳄鱼夹&#xff09;颜色和功能定义详见“设备组成和接口定义” 。 充电和通讯接口 VH03 使用标准的 USB Type-C 接口完成设备充电和通讯&…

创建一个vue项目

文章目录前言一、安装node.js二、vue ui命令没有反应原因1.vue ui命令是vue 3.x版本以上才支持&#xff0c;因此需要更新vue的版本。2.更新vue版本2.1首先使用以下命令卸载旧版本2.2然后使用下面命令安装最新版本2.3查看是当前版本号2.4此时&#xff0c;输入 vue -h 命令查看co…

HMS Core 3D流体仿真技术,打造移动端PC级流体动效

移动设备硬件的高速发展&#xff0c;让游戏行业发生翻天覆地的变化&#xff0c;许多酷炫的游戏效果不再局限于电脑端&#xff0c;玩家在移动端就能享受到场景更逼真、画质更清晰、体验更流畅的游戏服务。但由于移动设备算力不足&#xff0c;为了实现真实感的水体效果&#xff0…

cesium地形上面绘点时,山背面点位始终显示在地形上

cesium地形上面绘点时&#xff0c;山背面点位始终显示在地形上&#xff0c;如下图&#xff1a; 深度检测也是打开的&#xff0c;各种方法试完之后&#xff0c;也没有找到问题&#xff0c;把viewer属性注释之后&#xff0c;就没有出现这个问题&#xff0c;于是一个个属性&#…