redis-cluster集群(目的:高可用)

1、特点

集群由多个node节点组成,redis数据分布在这些节点中,在集群中分为主节点和从节点,一个主对应一个从,所有组的主从形成一个集群,每组的数据是独立的,并且集群自带哨兵模式

2、工作原理

集群模式中,主从一一对应,数据写入和读取与主从模式一样,主负责写,从只能读;集群模式自带哨兵模式,可以自动实现故障切换,但在故障切换完成之前,整个集群不可用,切换完毕后,集群立刻恢复

3、集群模式按照数据分片

(1)数据分片:集群核心功能。每个主都可以对外提供读、写功能,但数据是一一对应写入主的对应从节点,所以在集群模式中,不能保证数据的完整性

(2)高可用:集群主要目的

4、数据分片的实现过程

redis的集群引入hash槽的概念

redis集群中共有16384个哈希槽位(0-16383)

如何分配hash槽位?

根据集群中的主从节点数分配hash槽位,每个主从节点只负责一部分的hash槽位。每次读写都涉及hash槽位,key通过CRC16的校验机制,对16384取余,余数值决定数据放入哪个hash槽位,通过余数值找到对应槽位找到所在节点,直接跳转到这个节点进行存储操作【每个节点的hash槽位值是连续的。若出现不连续的hash槽位或hash槽位没有被全部分配,集群会报错】

hash槽位的原理结构图:

故障切换过程中为什么会提示集群不可用?hash槽位无人接手

主宕机后,主节点原来负责的hash槽位将会不可用,此时需要从节点代替主节点继续负责原有的hash槽位,保证集群正常工作。故障切换过程中,会提示集群不可用;切换完成后,集群恢复,继续工作

5、redis-cluster集群实验

实验目的:实现集群高可用

实验条件:

IP地址

初始服务器

组件

20.0.0.14

创建集群,自动随机分配一一对应的主从服务器

redis服务

20.0.0.24

redis服务

20.0.0.34

redis服务

20.0.0.44

redis服务

20.0.0.54

redis服务

20.0.0.64

redis服务

实验步骤:

(1)修改配置文件【所有服务器】

vim /etc/redis/6379.conf

(2)、创建集群

redis-cli -h 20.0.0.14 --cluster create 20.0.0.14:6379 20.0.0.24:6379 20.0.0.34:6379 20.0.0.44:6379 20.0.0.54:6379 20.0.0.64:6379 --cluster-replicas 1

 -cluster- replicas 1 规定一个主只有一个从【主从是随机分配的】

集群模式中,集群模式不能切换库,只能选择默认库——0库

(3)、查看hash槽位CLUSTER nodes

此时的主、从服务器

20.0.0.14——redis1

20.0.0.54——redis5

20.0.0.24——redis2

20.0.0.64——redis6

20.0.0.34——redis3

20.0.0.44——redis4

(4)测试

在任意一个主中创建键值对

主20.0.0.14——redis1    从20.0.0.54——redis5

①验证从节点能不能读。不能

此处error不是报错,表明客户端尝试读取键值对test1,但是实际槽位在4768,因此集群要求客户端移动到4768槽位所在的主机节点获取数据

②验证从节点能不能写。不能

③验证分配hash槽位后,不在相应的hash槽位上的主节点能不能写。不能,只能到指定节点上操作

(5)模拟故障

任意一台主服务器故障

主20.0.0.34——redis3故障,从20.0.0.44——redis4成为新主

(6)恢复故障

恢复原主20.0.0.34——redis3

(7)、监控redis实时工作日志,检测主从节点之间的心跳线

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Android系统调试工具大全:解密adb、dumpsys、procrank等神器

Android系统调试工具大全:解密adb、dumpsys、procrank等神器 引言 Android开发中,调试是一个非常重要的环节,本文将介绍一些常用的Android系统调试工具,包括adb、logcat、procrank、dumpsys、dmesg、top、free、df、trace、pm、…

如何使用Google My Business来提升您的内容和SEO?

如果您的企业有实体店,那么使用Google My Business(GMB)来改善您的本地SEO并增强您的在线形象至关重要。Google My Business (GMB) 是 Google 提供的补充工具,使企业能够控制其在 Google 搜索和地图上的数字…

【数字化转型方法论读书笔记】-数据中台角色解读

一千个读者,就有一千个哈姆雷特。同样,数据中台对于企业内部不同角色的价值也不同,下面分别从董事长、CEO、 CTO/CIO、IT 架构师、数据分析师这 5 个角色的视角详细解读数据中台。 1、董事长视角下的数据中台 在数字经济时代,企业…

【从入门到起飞】JavaSE—多线程(3)(生命周期,线程安全问题,同步方法)

🎊专栏【JavaSE】 🍔喜欢的诗句:路漫漫其修远兮,吾将上下而求索。 🎆音乐分享【如愿】 🎄欢迎并且感谢大家指出小吉的问题🥰 文章目录 🍔生命周期🎄线程的安全问题&#…

每日一题 1410. HTML 实体解析器(中等,模拟)

模拟&#xff0c;没什么好说的 class Solution:def entityParser(self, text: str) -> str:entityMap {&quot;: ",&apos;: "",>: >,<: <,&frasl;: /,&amp;: &,}i 0n len(text)res []while i < n:isEntity Falseif …

Java—学生信息管理系统(简单、详细)

文章目录 一、主界面展示二、学生类三、系统功能方法3.1 main()方法3.2 添加学生信息3.3 删除学生信息3.4 修改学生信息3.5 查看所有学生信息 四、完整代码4.1 Student .Java4.2 StudentManger.Java 前言&#xff1a;本案例在实现时使用了Java语言中的ArrayList集合来储存数据。…

【Java系列】SpringBoot 集成MongoDB 详细介绍

目录 写在前面 一、步骤介绍 步骤 1: 添加 MongoDB 依赖 步骤 2: 配置 MongoDB 连接信息 步骤 3: 创建实体类 步骤 4: 创建 Repository 接口 步骤 5: 使用 Repository 进行操作 二、特殊处理 写在前面 在Spring Boot中集成MongoDB的过程相对简单&#xff0c;以下是一个…

git的用法

目录 一、为什么需要git 二、git基本操作 2.1、初始化git仓库 2.2、配置本地仓库的name和email 2.3、认识工作区、暂存区、版本库 三、git的实际操作 3.1 提交文件 3.2 查看git状态以及具体的修改 3.3 git版本回退 git reset 3.1 撤销修改 四、git分支管理 4.…

一体化大气环境监测设备实时守护我们的空气质量

WX-CSQX12 随着空气污染问题的日益严重&#xff0c;大气环境监测设备成为了我们生活中不可或缺的一部分。而一体化的大气环境监测设备&#xff0c;更是为我们的环境保护工作带来了更多的便利和效益。 一体化大气环境监测设备是一种集成了多种功能于一体的环保设备&#xff0c;…

USB驱动开发基础

USB标准 USB1.0&#xff0c; 1996&#xff0c;低速1.5Mbps和高速12Mbps&#xff0c;USB1.1 iMac G3&#xff0c;Type A和Type B接口USB 2.0 2000&#xff0c; 480Mpbs&#xff0c;Type A/B/C接口、Micro A/BUSB 3.0 5Gbps, 随着USB 3.2命名规定&#xff0c;现在也叫USB 3.2 Ge…

Altium Designer学习笔记11

画一个LED的封装&#xff1a; 使用这个SMD5050的封装。 我们先看下这个芯片的功能说明&#xff1a; 5050贴片式发光二极管&#xff1a; XL-5050 是单线传输的三通道LED驱动控制芯片&#xff0c;采用的是单极性归零码协议。 数据再生模块的功能&#xff0c;自动将级联输出的数…

代码随想录算法训练营Day 60 || 84.柱状图中最大的矩形

84.柱状图中最大的矩形 力扣题目链接(opens new window) 给定 n 个非负整数&#xff0c;用来表示柱状图中各个柱子的高度。每个柱子彼此相邻&#xff0c;且宽度为 1 。 求在该柱状图中&#xff0c;能够勾勒出来的矩形的最大面积。 1 < heights.length <10^50 < hei…

安卓毕业设计基于安卓android微信小程序的家校通系统

运行环境 开发语言&#xff1a;Java 框架&#xff1a;ssm JDK版本&#xff1a;JDK1.8 服务器&#xff1a;tomcat7 小程序框架&#xff1a;uniapp 小程序开发软件&#xff1a;HBuilder X 小程序运行软件&#xff1a;微信开发者 项目介绍 基于微信小程序的家校通系统的设计基…

ECRS生产工时分析软件:工业效率提升的隐形引擎

降本增效往往是企业开工规划的第一步。那到底降什么本&#xff0c;增什么效呢&#xff0c;对于很多企业来说&#xff0c;都是从采购成本入手&#xff0c;结果采购成本是降下来了&#xff0c;但是整体品质却下降了。实际上&#xff0c;要降本增效&#xff0c;优化现场管理才是企…

DBS note4:Buffer Management

目录 1、介绍 2、缓冲池 3、处理页面请求 4、LRU替换和时钟策略 1&#xff09;顺序扫描性能 - LRU 5、最近最常使用替换策略&#xff08;MRU Replacement&#xff09; 1&#xff09;Sequential Scanning Performance - MRU 6、练习题 1&#xff09;判断真假 2&#xf…

python实战—核心基础3(RGB模式颜色转换器) lv1

目录 一、核心代码解释 二、代码 三、运行截图 一、核心代码解释 1、hex() 函数 参数说明&#xff1a; x -- 10进制整数 返回值&#xff1a; 返回16进制数&#xff0c;以字符串形式表示。 实例&#xff1a; 以下实例展示了 hex 的使用方法&#xff1a; >>>h…

单片机调试技巧--修改bin文件实现断点

fromelf --text -a -c --outputall.dis F103_Moduel\F103_Moduel.axffromelf --bin --outputtest.bin F103_Moduel\F103_Moduel.axf 在启动文件中&#xff0c;修改UsageFault_Handler UsageFault_Handler\PROC; get current contextTST lr, #0x04 ; if(!EXC_RETURN[2])ITE…

WifiManager的getConnectionInfo被弃用了?快来使用ConnectivityManager获取更全的网络信息吧

前言 最近在使用flutter写桌面端的一个adb工具&#xff0c;可以使用adb命令无线连接设备&#xff0c;需要电脑和手机在同一局域网内&#xff0c;但是需要手机的ip地址。于是我想到写一个android桌面小组件&#xff0c;点一下就获取WiFi的ipv4地址并显示出来&#xff0c;先去找…

计算机网络之运输层

一、概述 物理层、数据链路层以及网络层它们共同解决了将主机通过异构网络互联起来所面临的的问题&#xff0c;实现了主机到主机的通信 但实际上在计算机网络中进行通信的真正实体是位于通信两端主机中的进程 如何为运行在不同主机上的应用进程提供直接的通信服务时运输层的任务…

【深度学习】Transformer简介

近年来&#xff0c;Transformer模型在自然语言处理&#xff08;NLP&#xff09;领域中横扫千军&#xff0c;以BERT、GPT为代表的模型屡屡屠榜&#xff0c;目前已经成为了该领域的标准模型。同时&#xff0c;在计算机视觉等领域中&#xff0c;Transformer模型也逐渐得到了重视&a…