Redis集群搭建笔记

redis集群:

1.hash取余算法

2.一致性hash算法

3.哈希槽算法

以下使用哈希槽算法

Redis 3主3从搭建

新建6个Redis Docker容器实例

docker run -d --name redis-node-1 --net host --privileged=true -v /usr/local/develop/redis/share/redis-node-1:/data redis:6.0.8 --cluster-enabled yes --appendonly yes --port 6381

docker run -d --name redis-node-2 --net host --privileged=true -v /usr/local/develop/redis/share/redis-node-2:/data redis:6.0.8 --cluster-enabled yes --appendonly yes --port 6382

docker run -d --name redis-node-3 --net host --privileged=true -v /usr/local/develop/redis/share/redis-node-3:/data redis:6.0.8 --cluster-enabled yes --appendonly yes --port 6383

docker run -d --name redis-node-4 --net host --privileged=true -v /usr/local/develop/redis/share/redis-node-4:/data redis:6.0.8 --cluster-enabled yes --appendonly yes --port 6384

docker run -d --name redis-node-5 --net host --privileged=true -v /usr/local/develop/redis/share/redis-node-5:/data redis:6.0.8 --cluster-enabled yes --appendonly yes --port 6385

docker run -d --name redis-node-6 --net host --privileged=true -v /usr/local/develop/redis/share/redis-node-6:/data redis:6.0.8 --cluster-enabled yes --appendonly yes --port 6386

--net host会使用宿主机的网络   所以端口区分

现在6台Redis不分主从   下面构建6台Redis的主从机制

docker exec -it redis-node-1 /bin/bash

创建集群 并指定(说明)是一主一从  我这里是在一台ECS服务器演示,因此可以使用127.0.0.1

redis-cli --cluster create 127.0.0.1:6381 127.0.0.1:6382 127.0.0.1:6383 127.0.0.1:6384 127.0.0.1:6385 127.0.0.1:6386 --cluster-replicas 1

redis-cli -p 6381

查看集群信息

cluster info

查看本集群节点

cluster nodes

也就是说 1和5     2和6   3和4     对应关系要从上图去看 这个看实际情况(不是固定的)

现在如果忘redis 1存数据 会出现下面这样情况  原因是对Key槽位计算

现在是集群环境  不能再 redis-cli -p 6381  进入某一个单一Redis服务器进行如上设置

可以进入某一个Redis服务器  通过集群环境

例如   进入某一个Redis服务器

docker exec -it redis-node-1 /bin/bash

redis-cli -p 6381 -c                         -c代表集群环境

现在就都可以存了

查看集群信息状态

redis-cli --cluster check 127.0.0.1:6381

演示主从容错切换迁移 

例如 1号宕机  5号从机上位

docker stop redis-node-1

进入redis-node-2查看

docker exec -it redis-node-2 /bin/bash

redis-cli -p 6382 -c

cluster nodes

比如说  1号机宕机后 现在修复了  看看情况

docker start redis-node-1

docker exec -it redis-node-1 /bin/bash

redis-cli -p 6381 -c

cluster nodes

如果你想把1号机恢复为主   那么停掉5号机  自己测试如果直接重启无效     再重启就好了

主从扩容演示

比如扛不住了  从3主3从 扩至4主4从  就是加一组

主要涉及槽位分配问题

注意下图对应关系  以自己为主  不是固定的  我这里是1和5     2和6   3和4 

新增6387和6388节点

docker run -d --name redis-node-7 --net host --privileged=true -v /usr/local/develop/redis/share/redis-node-7:/data redis:6.0.8 --cluster-enabled yes --appendonly yes --port 6387

docker run -d --name redis-node-8 --net host --privileged=true -v /usr/local/develop/redis/share/redis-node-8:/data redis:6.0.8 --cluster-enabled yes --appendonly yes --port 6388

现在上面两个节点和原集群没在一起,进入6387节点 将节点做为master节点加入集群

加入后是空槽位的需要重新分配槽位

docker exec -it redis-node-7 /bin/bash

将新增的6387做为master节点加入集群

redis-cli --cluster add-node 127.0.0.1:6387 127.0.0.1:6381

redis-cli --cluster check 127.0.0.1:6381

可以看到没有槽位

重新分配槽位

redis-cli --cluster reshard 127.0.0.1:6381

然后会重新分配槽位

再次检查集群情况

redis-cli --cluster check 127.0.0.1:6381

可以看出是原先槽位各自分配了点槽位给扩展机

将6388做为从机挂到6377上

redis-cli --cluster add-node 127.0.0.1:6388 127.0.0.1:6387 --cluster-slave --cluster-master-id 66d270319f66339c4a9040f842dba6fa561e8909
   注意最后是6377的编号  看自己实际情况

再次检查集群情况

redis-cli --cluster check 127.0.0.1:6381   4主4从配置成功

主从缩容演示

同样  缩容  槽位也要重新分配

步骤:先清除从节点6388,清空6387槽位重新分配,删除6387,恢复3主3从

检查集群情况,获取6388的节点id

88ca21d614ee3faf6bc6cd544356a38a15b4746c 

删除6388节点

redis-cli --cluster del-node 127.0.0.1:6388 88ca21d614ee3faf6bc6cd544356a38a15b4746c

查看

redis-cli --cluster check 127.0.0.1:6383     因为在一个集群中  6381  6382  6383 随便  如果在不同ECS服务器  注意IP
 

剩下7台

清空6387槽位  重新分配  本例将清出来的槽位都给6381

redis-cli --cluster reshard 127.0.0.1:6381

检查集群情况

redis-cli --cluster check 127.0.0.1:6381

可以看到6377已经没有槽位了 并且把槽位都给了6381

删除6387

redis-cli --cluster del-node 127.0.0.1:6387 66d270319f66339c4a9040f842dba6fa561e8909

检查集群

redis-cli --cluster check 127.0.0.1:6381

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

SQL 中如何实现多表关联查询?

阅读本文之前请参阅----MySQL 数据库安装教程详解(linux系统和windows系统) 在SQL中,多表关联查询是通过使用JOIN操作来实现的,它允许你从两个或多个表中根据相关列的值来检索数据。以下是几种常见的JOIN类型: …

MFC 多文档程序的基本编程

下载了一个openGL mfc的多文档程序,以此来学习mfc多文档模式的编程; 1 基本编程 它每次新建一个文档,会在窗口绘制一个三角形、一个矩形;如果没有了图形刷新一下; 先看一下为什么每次打开新文档会绘制图形; 生成工程之后主要有5个类,比单文档程序多了一个子框架类; 可…

width:100%和width:auto有啥区别

项目中使用了with属性,突然好奇auto 和 100% 的区别,特地搜索实践总结了一下观点 一、 width属性介绍二、 代码带入三、 分析比较四、 总结 一、 width属性介绍 width 属性用于设置元素的宽度。width 默认设置内容区域的宽度,但如果 box-siz…

计算机组成原理 — 存储器(2)

高速缓冲存储器 大家好呀!我是小笙,由于存储器这部分章节内容较多,我分成二部分进行总结,以下是第二部分,希望内容对你有所帮助! 概述 目的:避免CPU空等现象 原理:程序访问的局部…

【k8s资源调度-Deployment】

1、标签和选择器 1.1 标签Label 配置文件&#xff1a;在各类资源的sepc.metadata.label 中进行配置通过kubectl 命令行创建修改标签&#xff0c;语法如下 创建临时label&#xff1a;kubectl label po <资源名称> apphello -n <命令空间&#xff08;可不加&#xff0…

IO进程:信号灯集

程序代码&#xff1a; sem.h: 1 #ifndef __SEM_H__2 #define __SEM_H__3 4 //创建信号灯集并初始化&#xff0c;semcount表示灯个数5 int open_sem(int semcount);6 7 //申请资源操作&#xff0c;semno表示灯的编号8 int P(int semid,int semno);9 10 //释放资源操作&#xff…

uniapp播放mp4省流方案

背景&#xff1a; 因为项目要播放一个宣传和讲解视频&#xff0c;视频文件过大&#xff0c;同时还为了节省存储流量&#xff0c;想到了一个方案&#xff0c;用m3u8切片替代mp4。 m3u8&#xff1a;切片播放&#xff0c;可以理解为一个1G的视频文件&#xff0c;自行设置文…

【前端素材】推荐优质后台管理系统Be admin平台模板(附源码)

一、需求分析 后台管理系统&#xff08;或称作管理后台、管理系统、后台管理平台&#xff09;是一种专门用于管理网站、应用程序或系统后台运营的软件系统。它通常由一系列功能模块组成&#xff0c;为管理员提供了管理、监控和控制网站或应用程序的各个方面的工具和界面。以下…

Spring-IoC

文章目录 Spring IoC一、IoC概述1、概述2、IoC原理3、IoC作用4、Spring Bean 二、Spring容器 相关接口1、BeanFactory2、ApplicationContext1&#xff09;HierarchicalBeanFactory2&#xff09;ListableBeanFactory3&#xff09;EnvironmentCapable4&#xff09;ApplicationEve…

Web3 基金会推出去中心化之声计划:投入高额 DOT 和 KSM ,助力去中心化治理

作者&#xff1a;Web3 Foundation Team 编译&#xff1a;OneBlock 原文&#xff1a;https://medium.com/web3foundation/decentralized-voices-program-93623c27ae43 Web3 基金会为 Polkadot 和 Kusama 创建了去中心化之声计划&#xff08;Decentralized Voices Program&…

软考39-上午题-【数据库】-关系代数运算1-传统的集合运算

一、笛卡尔积 二、关系代数 关系代数是施加于关系之上的集合代数运算。 关系代数包含&#xff1a; 传统的集合运算专门的关系运算 2-1、传统的集合运算 1、关系的并 示例&#xff1a; 2、关系的差 示例&#xff1a; 3、关系的交 示例&#xff1a; 关系的并、差、交&#xf…

LeetCode 448.找到所有数组中消失的数字

目录 1.题目 2.代码及思路 3.进阶 3.1题目 3.2代码及思路 1.题目 给你一个含 n 个整数的数组 nums &#xff0c;其中 nums[i] 在区间 [1, n] 内。请你找出所有在 [1, n] 范围内但没有出现在 nums 中的数字&#xff0c;并以数组的形式返回结果。 示例 1&#xff1a; 输入&am…

【数学建模入门】

数学建模入门 数学建模需要的学科知识怎么学习数学模型如何读好一篇优秀论文数学建模赛题常见类别数学建模常见问题数学建模组队和分工数学建模准备工作 数学建模需要的学科知识 怎么学习数学模型 &#x1f4a6;推荐阅读书籍&#xff1a; 《数学建模算法与应用》&#xff0c;…

车规级MCU的行业走向

1 主要厂家 车规级MCU&#xff08;车用微控制器单元&#xff09;的主要厂家包括&#xff1a; NXP半导体&#xff1a;NXP是全球领先的车规级MCU提供商之一&#xff0c;提供广泛的产品用于汽车控制和管理系统。英飞凌科技&#xff1a;作为汽车半导体的领导者之一&#xff0c;英飞…

fly-barrage 前端弹幕库(1):项目介绍

fly-barrage 是我写的一个前端弹幕库&#xff0c;由于经常在 Bilibili 上看视频&#xff0c;所以对网页的弹幕功能一直蛮感兴趣的&#xff0c;所以做了这个库&#xff0c;可以帮助前端快速的实现弹幕功能。 项目官网地址&#xff1a;https://fly-barrage.netlify.app/&#xff…

旅游分享系列之:福建旅游攻略

旅游分享系列之&#xff1a;福建旅游攻略 一、漳州1.福建土楼2.云水谣3.四菜一汤景点 二、厦门1.园林博览苑2.海上自行车道3.山海步道4.海滩5.闽南菜6.落日 三、泉州1.衙口沙滩2.海上日出3.珞珈寺4.海滩烟花 一、漳州 游玩2个景点&#xff1a;云水谣&#xff0c;四菜一汤可以住…

《图解HTTP》笔记2:http的构成

目录 1&#xff0c;查看浏览器上面一个具体的http请求 2&#xff0c;HTTP报文的具体构成 2.1&#xff0c;http的报文结构 2.2&#xff0c;http的请求报文例子 2.3&#xff0c;http的响应报文例子 1&#xff0c;查看浏览器上面一个具体的http请求 浏览器地址栏输入网址&…

ES6内置对象 - Set

Set&#xff08;es6提供的一种数据结构&#xff0c;类似数组&#xff0c;是一个集合&#xff0c;可以存储任何类型的元素且唯一、不重复&#xff0c;so,多用于元素去重&#xff09; 如上图&#xff0c;Set数据结构自带一些方法 1.Set对象创建 let a new Set([1,2,3,3,1,2,4,…

spring boot3登录开发-2(1图形验证码接口实现)

⛰️个人主页: 蒾酒 &#x1f525;系列专栏&#xff1a;《spring boot实战》 &#x1f30a;山高路远&#xff0c;行路漫漫&#xff0c;终有归途。 目录 前置条件 内容简介 图形验证码接口实现 导入糊涂工具依赖 接口分析 编写验证码接口 测试验证码接口 前置条件 …

浅浅的画一个STDP的图像吧

stdp最重要的是两个窗口函数 根据这个方程我们刻画出他的轨迹&#xff0c;代码如下 import numpy as np import matplotlib.pyplot as plt# 定义STDP参数 tau_pos 30 # 正向突触权重变化的时间常数 tau_neg 30 # 负向突触权重变化的时间常数 A_pos 0.1 # 正向突触权重变…