redis集群操作

news/2025/1/11 4:22:59/

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.ppmy.cn/news/6964.html

相关文章

微服务 Spring Boot Mybatis-Plus 整合 EasyPOI 实现 Excel 一对多 导入

文章目录⛄引言一、EasyPOI 实现Excel 的一对多导入 -- 代码实现⛅需求说明⚡核心源码实现二、Easy POI 实现一对多导入 -- 测试三、效果图展示⛵小结⛄引言 Excel导入 是 开发中 很常用的 功能 &#xff0c;本篇讲解 如何使用 Spring Boot MyBatis -Plus 整合 EasyPOI 实现E…

使用JDBC+javafx写一个简单功能齐全的图书管理系统

目录 1、JDBC的使用 2、对应包和Java文件的层级关系及对应的含义 3、数据库 4、相关代码 1&#xff09;、bookmanager包 Ⅰ、main函数 Ⅱ、utils包 Ⅲ、bean包 Ⅳ、controller包 2)resources(为资源文件包&#xff0c;可以看链接文章了解) Ⅰ、book包 Ⅱ、 login包…

微服务洞察,让微服务更透明

作者&#xff1a; 屿山 微服务作为云原生时代下一种开发软件的架构和组织方法&#xff0c;通过将明确定义的功能分成更小的服务&#xff0c;并让每个服务独立迭代&#xff0c;增加了应用程序的灵活性&#xff0c;允许开发者根据需要更轻松地更改部分应用程序。同时每个微服务可…

【安全漏洞】水平权限漏洞和垂直权限漏洞

前言 权限校验非常重要。如果不对水平、垂直权限做校验&#xff0c;就会发生泄漏用户数据的事故&#xff0c;造成P0故障。 一、水平权限漏洞 1、水平权限漏洞基本概念 什么是水平权限漏洞呢&#xff1f; 简单来说&#xff0c;水平权限漏洞是用户CURD了本不属于他的资源。以上图…

《MongoDB入门教程》第21篇 CRUD之删除文档

本文将会介绍如何利用 deleteOne() 和 deleteMany() 方法删除满足指定条件的文档。 deleteOne() 方法 deleteOne() 方法用于删除集合中的单个文档&#xff0c;语法如下&#xff1a; db.collection.deleteOne(filter, option)该方法包含两个参数&#xff1a; filter 是一个必…

项目沟通怎么才能不像在吵架?

项目沟通并非吵架&#xff0c;看起来却总是剑拔弩张。有效沟通才能真正解决问题&#xff0c;笔者给出了一些实用的建议&#xff0c;从对象到场景&#xff0c;再到方法与技巧&#xff0c;应该在沟通中有针对性地注意这些问题。 沟通是个老话题&#xff0c;在项目管理中有专门讲沟…

Springboot 启用 ehcache缓存

目录首先&#xff0c;添加依赖创建ehcache.xml配置文件修改springboot配置文件&#xff0c;引入ehcache.xml配置文件启用EnableCaching注解实体类实现可序列化接口Serializable添加缓存注解Cacheable、CacheEvictCacheable缓存数据CacheEvict清除缓存其它设置java.io.tmpdir子目…

setContentView学习(一)

setContentView流程分两种情况,一种是继承自Activity的情况,另一种是继承自AppCompatActivity的情况&#xff0c;下面分别介绍。 先说继承自Activity的情况&#xff0c;源码为android-30 public class Activity extends ContextThemeWrapper {public void setContentView(Lay…