redis cluster实验详解

news2025/1/3 3:53:10

华子目录

  • 实验
    • 环境准备
    • 部署`redis cluster`
    • 添加节点
    • 删除节点
    • redis cluster集群维护

实验

环境准备

  • 再开3台主机

在这里插入图片描述

  • 先把之前3源码编译redis删除
[root@redis-node1 ~]# cd /usr/local/redis/
[root@redis-node1 redis]# make uninstall

[root@redis-node2 ~]# cd /usr/local/redis/
[root@redis-node2 redis]# make uninstall

[root@redis-node3 ~]# cd /usr/local/redis/
[root@redis-node3 redis]# make uninstall
  • 6台主机通过yum方式安装
[root@redis-node1 ~]# yum install redis -y

[root@redis-node2 ~]# yum install redis -y

[root@redis-node3 ~]# yum install redis -y

[root@redis-node110 ~]# yum install redis -y

[root@redis-node120 ~]# yum install redis -y

[root@redis-node130 ~]# yum install redis -y

部署redis cluster

  • 所有redis主机
#现在node1上修改配置文件
[root@redis-node1 ~]# vim /etc/redis/redis.conf
bind * -::*
masterauth "123456"   #集群主从认证
requirepass "123456"   #redis登录密码
cluster-enabled yes   #开启cluster集群功能
cluster-config-file nodes-6379.conf   #指定集群配置文件
cluster-node-timeout 15000   #节点加入集群的超时时间,单位是毫秒
#再将配置文件复制给其他节点
[root@redis-node2 ~]# scp /etc/redis/redis.conf root@172.25.254.20:/etc/redis/

[root@redis-node3 ~]# scp /etc/redis/redis.conf root@172.25.254.30:/etc/redis/

[root@redis-node110 ~]# scp /etc/redis/redis.conf root@172.25.254.110:/etc/redis/

[root@redis-node120 ~]# scp /etc/redis/redis.conf root@172.25.254.120:/etc/redis/

[root@redis-node130 ~]# scp /etc/redis/redis.conf root@172.25.254.130:/etc/redis/
[root@redis-node1 ~]# systemctl restart redis

[root@redis-node2 ~]# systemctl restart redis

[root@redis-node3 ~]# systemctl restart redis

[root@redis-node110 ~]# systemctl restart redis

[root@redis-node120 ~]# systemctl restart redis

[root@redis-node130 ~]# systemctl restart redis
#进入node1的redis中
[root@redis-node1 ~]# redis-cli

在这里插入图片描述
在这里插入图片描述

[root@redis-node1 ~]# redis-cli --cluster create -a 123456 \
> 172.25.254.10:6379 172.25.254.20:6379 172.25.254.30:6379 \
> 172.25.254.110:6379 172.25.254.120:6379 172.25.254.130:6379 \
> --cluster-replicas 1
  • --cluster-replicas 1:指定了每个主节点应该有一个从节点。由于总共6个节点Redis集群自动将这些节点分为3个主节点3个从节点Redis会根据节点IP地址端口号自动进行主从分配,确保每个主节点都有一个对应从节点

在这里插入图片描述
在这里插入图片描述

  • 只有master上有hash槽slave上没有hash槽
  • 只有存在hash槽主机才能进行读写
  • slave作用:只有当对应master挂掉了,才会将master上的hash槽迁移到slave上,在没有迁移之前slave上是没有hash槽的

此时redis cluster已经搭建成功

[root@redis-node1 ~]# redis-cli -a 123456 --cluster check 172.25.254.20:6379

在这里插入图片描述

[root@redis-node1 ~]# redis-cli -a 123456 --cluster info 172.25.254.110:6379

在这里插入图片描述

  • 当在10插入数据
[root@redis-node1 ~]# redis-cli -a 123456
127.0.0.1:6379> set name huazi
(error) MOVED 5798 172.25.254.20:6379

在这里插入图片描述

  • 20插入成功
[root@redis-node2 ~]# redis-cli -a 123456
127.0.0.1:6379> set name huazi
OK

在这里插入图片描述

  • 当在10上查看数据
[root@redis-node1 ~]# redis-cli -a 123456
127.0.0.1:6379> get name
(error) MOVED 5798 172.25.254.20:6379

在这里插入图片描述

  • 20查看
[root@redis-node2 ~]# redis-cli -a 123456
127.0.0.1:6379> get name
"huazi"

在这里插入图片描述

添加节点

  • 2个节点

在这里插入图片描述

[root@redis-node50 ~]# yum install redis -y

[root@redis-node150 ~]# yum install redis -y
#将配置文件传递给50和150
[root@redis-node1 ~]# scp /etc/redis/redis.conf root@172.25.254.50:/etc/redis/

[root@redis-node1 ~]# scp /etc/redis/redis.conf root@172.25.254.150:/etc/redis/
[root@redis-node50 ~]# systemctl restart redis

[root@redis-node150 ~]# systemctl restart redis

在这里插入图片描述

  • 50加入到cluster集群中
[root@redis-node1 ~]# redis-cli -a 123456 --cluster add-node 172.25.254.50:6379 172.25.254.20:6379
  • 查看
[root@redis-node1 ~]# redis-cli -a 123456 --cluster check 172.25.254.10:6379

在这里插入图片描述

  • cluster中重新划分槽位
[root@redis-node1 ~]# bc
16384/4
4096

[root@redis-node1 ~]# redis-cli -a 123456 --cluster reshard 172.25.254.10:6379

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 槽位重新划分同时不会影响原来槽位中数据
[root@redis-node1 ~]# redis-cli -a 123456 --cluster check 172.25.254.10:6379

在这里插入图片描述

  • 查看数据
[root@redis-node1 ~]# redis-cli -a 123456
127.0.0.1:6379> get name
(error) MOVED 5798 172.25.254.50:6379
#让到50上查看
[root@redis-node50 ~]# redis-cli -a 123456
127.0.0.1:6379> get name
"huazi"
  • 加入slave集群
[root@redis-node1 ~]# redis-cli -a 123456 --cluster add-node 172.25.254.150:6379 172.25.254.10:6379 --cluster-slave --cluster-master-id 779b42266fc4f08b0be1d65cba5a77ccbb46b8d4

在这里插入图片描述

  • 查看
[root@redis-node1 ~]# redis-cli -a 123456 --cluster check 172.25.254.10:6379

在这里插入图片描述

删除节点

  • 先删除slave
[root@redis-node1 ~]# redis-cli -a 123456 --cluster del-node 172.25.254.150:6379 c4311c2a6eee3330015c9b3458060ace57b906be

在这里插入图片描述

[root@redis-node1 ~]# redis-cli -a 123456 --cluster check 172.25.254.10:6379

在这里插入图片描述

  • 50槽位分享给其他节点
[root@redis-node1 ~]# redis-cli -a 123456 --cluster reshard 172.25.254.10:6379

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

[root@redis-node1 ~]# redis-cli -a 123456 --cluster check 172.25.254.10:6379

在这里插入图片描述

[root@redis-node1 ~]# redis-cli -a 123456 --cluster del-node 172.25.254.50:6379 779b42266fc4f08b0be1d65cba5a77ccbb46b8d4

在这里插入图片描述

  • 发现50已经从集群移除了
[root@redis-node1 ~]# redis-cli -a 123456 --cluster check 172.25.254.10:6379

在这里插入图片描述

  • 查看数据
[root@redis-node1 ~]# redis-cli -a 123456
127.0.0.1:6379> get name
(error) MOVED 5798 172.25.254.20:6379
[root@redis-node2 ~]# redis-cli -a 123456
127.0.0.1:6379> get name
"huazi"

redis cluster集群维护

  • 添加节点的时候是先添加node节点集群,然后分配槽位删除节点的操作与添加节点的操作正好相反,是先将被删除Redis node上的槽位迁移到集群中其他Redis node节点上,然后再将其删除,如果一个Redis node节点上的槽位没有被完全迁移删除node时候提示有数据无法删除

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

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

相关文章

微服务-服务保护和分布式事务

假如微服务中某个服务出现了故障,那我们需要为这个服务做好一些兜底的方案,健壮性的处理,这就是服务保护.以前我们写的是单体项目,不论项目多复杂,操作多少张表,最终都能够满足事务ACID的特性,但是我们分成了很多个服务之后,由于很多的服务是独立的,有各自的数据库,破坏了事务A…

【已解决】PDF文档有密码怎么办(2024新)免费在线工具PDF2Go

强大的解密工具PDF2Go使用指南 一、PDF2Go简介 PDF2Go是由德国QaamGo公司开发的在线PDF工具箱,以其强大的功能和用户友好的界面而闻名。它不仅免费,而且不需要用户注册或安装任何软件,只需打开浏览器即可使用。 二、功能特点 1. 免费且无需…

Ashy的考研游记

文章目录 摘要12.1112.2012.21 DAY1(政治/英语)政治英语 12.22 DAY2(数学/专业课)数学专业课 结束估分 摘要 在24年的12月里,Ashy完成了他的考研冲刺,顺利的结束了他本年度的考研之旅。 在十二月里&#…

Flutter-插件 scroll-to-index 实现 listView 滚动到指定索引位置

scroll-to-index 简介 scroll_to_index 是一个 Flutter 插件,用于通过索引滚动到 ListView 中的某个特定项。这个库对复杂滚动需求(如动态高度的列表项)非常实用,因为它会自动计算需要滚动的目标位置。 使用 安装插件 flutte…

XIAO Esp32 S3 轻松发送 HTTP 请求,打造智能物联网应用

让物联网更智能,连接更便捷! ESP32 是一款高性能的物联网开发平台,它不仅支持 Wi-Fi 和蓝牙,还是实现各种智能设备连接和控制的理想选择。今天,我们为你展示如何利用 ESP32 发送 HTTP 请求,轻松实现设备间的数据传输和远程控制。 为什么选择 ESP32 发送 HTTP 请求? 强大…

Unity中实现转盘抽奖效果(一)

实现思路: 旋转转盘的z轴,开始以角加速度加速到角速度最大值,结束的时候,以角加速度减速使角速度减少到0,然后转盘z轴旋转的角度就是加上每秒以角速度数值大小,为了使角度不能一直增大,对360度…

Postman[8] 断言

1.常见的断言类型 status code: code is 200 //检查返回的状态码是否为200 Response body: contain string //检查响应中包含指定字符串包含指定的值 response body:json value check/ /检查响应中其中json的值 Response body: is equal to string …

教程:从pycharm基于anaconda构建机器学习环境并运行第一个 Python 文件

1. 安装 PyCharm 访问 PyCharm 官方网站:https://www.jetbrains.com/pycharm/。下载社区版(免费)或专业版(收费,提供更多功能)。按照操作系统的安装指导安装 PyCharm。安装后打开 PyCharm,并根…

记录一下图像处理的基础知识

记录一下自己学习的图像处理的基础知识。 一、图像的文件格式以及常用的图像空间 1、文件格式 常见的图像文件格式有 jpg, png, bmp, gif (1)jpg:有损压缩算法,大幅减小文件大小,便于存储和传输,兼容性…

0030.停车场车位预约管理系统+论文

一、系统说明 基于springbootvueelementui开发的停车场车位预约管理系统,系统功能齐全, 代码简洁易懂,适合小白学编程。 二、系统架构 前端:vue| elementui 后端:springboot | mybatis 环境:jdk1.8 | mysql8.0 | maven 三、代…

SpringCloudAlibaba实战入门之路由网关Gateway断言(十二)

上一节课中我们初步讲解了网关的基本概念、基本功能,并且带大家实战体验了一下网关的初步效果,这节课我们继续学习关于网关的一些更高级有用功能,比如本篇文章的断言。 一、网关主要组成部分 上图中是核心的流程图,最主要的就是Route、Predicates 和 Filters 作用于特定路…

Postman[4] 环境设置

作用:不同的环境可以定义不同的参数,在运行请求时可以根据自己的需求选择需要的环境 1.创建Environment 步骤: Environment-> ->命名->添加环境变量 2.使用Environment 步骤:Collection- >右上角选择需要的环境

【PCIe 总线及设备入门学习专栏 4.5 -- PCIe Message and PCIe MSI】

文章目录 PCIe Message 与 MSIPCIe Message 和 MSI 的作用与关系MSI 的配置与寄存器MSI 和 ARM GIC 的关系示例:MSI 在 ARM GIC 的实际应用总结 PCIe Message 与 MSI 本文将介绍 PCIe message 的作用以及message 与 MSI 的关系,再介绍 MSI 如何配置以及…

jquery-validate在前端数据校验中的应用以及remote异步调用实践-以若依为例

目录 前言 一、关于Jquery Validate组件 1、validate是什么 2、内置验证方式及触发方式 3、自定义验证规则 二、基本验证实战以及Remote验证 1、基本验证实现 2、remote校验方式 三、总结 前言 随着技术的不断演进,在我们的日常开发过程中,大家一…

连锁餐饮行业数据可视化分析方案

引言 随着连锁餐饮行业的迅速发展,市场竞争日益激烈。企业需要更加精准地把握运营状况、消费者需求和市场趋势,以制定科学合理的决策,提升竞争力和盈利能力。可视化数据分析可以帮助连锁餐饮企业整合多源数据,通过直观、动态的可…

WPF 样式

WPF 有自己的样式设置系统&#xff0c;也自带类似 Winform 的默认样式。默认样式比较一般&#xff0c;我们可以使用下面几种方式自定义好看的 wpf 样式。 1. 本地直接设置 比如更改按钮的背景色和字体颜色&#xff0c; <Grid><StackPanel Orientation"Horizon…

RabbitMQ实现生产者消费者

一.启动MQ 注意管理员身份进入cmd才行,我这里是在本地安装的MQ,推荐使用虚拟机安装 二.思路 官方解释RabbitMQ结构: 自我理解RabbitMQ结构: 其实RabbitMQ的服务器就像邮局一样,我们的生产者和消费者对于这个服务器来说都是消费者,因为服务器都可以向两者发送消息 环境准备 …

虚拟机用网线连其他设备(ROS多机网络配置)

电脑配置 把局域网的网线插入电脑&#xff0c;点击这边 配置以太网的IP 比如说我ROS主机的IP想设为192.168.144.10&#xff0c;那我笔记本的以太网IP可以设为192.168.144.8。 假设还有另外一个电脑&#xff08;ROS从机&#xff09;&#xff0c;他的IP被设置未192.168.144.4…

VIM: Vision Mamba基于双向状态空间模型的高效视觉表示学习

这篇文章的主要内容可以概括如下&#xff1a; 背景与动机&#xff1a; 近年来&#xff0c;状态空间模型&#xff08;SSM&#xff09;在长序列建模中展现出巨大潜力&#xff0c;尤其是Mamba模型在硬件感知设计上的高效性。 然而&#xff0c;现有的SSM模型在处理视觉数据时面临…

整合版canal ha搭建--基于1.1.4版本

开启MySql Binlog&#xff08;1&#xff09;修改MySql配置文件&#xff08;2&#xff09;重启MySql服务,查看配置是否生效&#xff08;3&#xff09;配置起效果后&#xff0c;创建canal用户&#xff0c;并赋予权限安装canal-admin&#xff08;1&#xff09;解压 canal.admin-1…