Reids集群
目录
一、集群的概念
1.为什么要搭建集群?
2.Redis搭建集群是否需要考虑状态同步的问题?
二、Redis集群的模式
1.redis集群--主从模式
1.1什么是Redis的主从模式?
1.2.主从模式它们之间的数据是怎么实现一个同步的?
1.3.主从服务器是否解决了单点故障的问题?
1.4.redis集群三台,是否实现了扩容?
所以怎么解决单点故障问题呢,也就是说怎么解决主服务器宕机导致写操作执行不了的问题呢?
2.Redis集群--哨兵模式
2.1 Redis-哨兵模式的原理
2.2 哨兵是怎么检测到主服务器宕机了呢?
2.3主服务宕机后哨兵怎么从多个从服务器中选出一个作为主服务器?
2.5哨兵是什么
3.Reids集群--Cluster模式
3.1什么是cluster模式?
3.2那么key应该写到哪个redis服务器中,又怎么确保key的读取也是在这个redis服务器中呢
3.3每个服务器都是中心服务器,那么一旦有一个服务器宕机了,那么这个服务器里面的数据不是就访问不到了?
3.4总结
一、集群的概念
1.为什么要搭建集群?
(1)单台服务器的并发量是有一个上限的,当大量的请求同时发送到服务器,超过了服务器的上限,这个服务器就会宕机,所以通过搭建集群提高并发量
(2)解决单点故障。当一台服务器挂了,那么所有的请求都访问不了,这样可用性就很低,所以通过搭建集群使得服务器挂了还有别的服务器可以接收请求
2.Redis搭建集群是否需要考虑状态同步的问题?
需要。因为Redis是保存了数据的,所以搭建Redis集群的时候就要考虑状态同步、数据同步的问题。不然一个redis里面进行了写操作,另一个Redis进行读操作,那么就会导致数据不一致

二、Redis集群的模式
1.redis集群--主从模式
1.1什么是Redis的主从模式?
也就是Redis搭建集群后,通过划分两个角色,一个主服务器一个从服务器
主服务器负责写操作
从服务器负责读操作
所以实现了读写分离
但是即使redis自身有持久化的机制,但是一旦磁盘发生损坏,数据又会丢失
所以需要多个从服务器进行读操作
1.2.主从模式它们之间的数据是怎么实现一个同步的?
(1)全量同步:在节点初始化的时候进行一个数据的全部同步
流程:1.因为在从服务器配置文件配置了主服务器,所以从服务器启动的时候做完认证就开始同步
2.给从服务器发送一个同步的命令到主服务器
3.主服务器收到命令,先做持久化,然后开始数据同步(主服务器做持久化的时候,如果又有命令过来,那么这个命令会放到暂缓区)
4.主服务器把持久化文件发送给从服务器
5.从服务器接收到持久化文件,先丢弃自己的数据,然后加载这个持久化文件在自己的内存中
6.主服务器继续发送暂缓区的命令给从服务器
7.从服务器接收主服务器的命令,加载到内存中
(2)增量同步:在节点初始化完成之后进行一个数据变动的同步
1.主服务器接收到了新的写命令后,它先在自己的内存中写入
2.然后广播给所有的从服务器
3.从服务器接收到广播过来的命令后,写入自己的内存中
所以这个主从服务器之间的数据同步就类似于Git.
第一次是直接克隆下来所有数据(全量同步)
后面是拉取更新的数据 (增量同步)
1.3.主从服务器是否解决了单点故障的问题?
没有。
因为主服务器只有一台,也就是写操作只有一台,所以一旦主服务器宕机,那么写操作又执行不了
1.4.redis集群三台,是否实现了扩容?
没有。虽然搭建了三台redis,但是三台保存的是同样的数据,只是做一个数据的备份,防止硬盘损坏,容量并没有增加
所以怎么解决单点故障问题呢,也就是说怎么解决主服务器宕机导致写操作执行不了的问题呢?
通过Redis集群--哨兵模式
2.Redis集群--哨兵模式

2.1 Redis-哨兵模式的原理
还是一样数量的主从服务器,只不过多了哨兵用来检测主服务器的状态,当哨兵检测到主服务器宕机后,它会在从服务器中选出一个作为主服务器进行写操作,这样就解决了单点故障问题。
2.2 哨兵是怎么检测到主服务器宕机了呢?
通过心跳机制,哨兵会给主服务器发送一个ping请求过去,如果主服务器是正常状态,那么就会回复哨兵一个pang响应,如果在一定的时间内从服务器没有回复哨兵,那么哨兵就认为主服务器宕机了
2.3主服务宕机后哨兵怎么从多个从服务器中选出一个作为主服务器?
1.看从服务器的偏移量,偏移量越大代表数据越新,越接近主服务器
2.偏移量一样,看优先级(开发人员可配置)
3.优先级一样,看redis运行时id
2.4多个哨兵的情况下,怎么在从服务器中选举出主服务器
1.首先在多个哨兵中选出哨兵Leader(通过哨兵的投票,哨兵的数量一般是奇数,方便少数服从多数)
2.这个Leader对从服务器进行选举
2.5哨兵是什么
哨兵其实也是redis服务器,只不过不能做读写操作
2.6当从服务器被选举成为主服务器后,之前宕机的主服务器恢复了,会怎样?
当从服务器被选举成为主服务器后,如果之前宕机的主服务器恢复后,那么之前的服务器会变为从服务器
3.Reids集群--Cluster模式
3.1什么是cluster模式?
cluster模式是无中心点的,也就是说redis集群中的每个redis服务器都具备读写的功能
这样就可以通过集群提高并发量
3.2那么key应该写到哪个redis服务器中,又怎么确保key的读取也是在这个redis服务器中呢
redis-cluster默认有一个16384的Hash槽,这个hash槽是用来存储我们redis的数据的。
cluster模式集群创建的时候会平均的把16384个hash槽分配给各个节点(也就是redis服务器),当我们在进行数据的存储的时候,根据CRC16(key)&16384计算出这个key应该存储在哪个hash槽中,从而落在hash槽对应的节点上面
这样就实现了读写数据在同一个redis服务器
3.3每个服务器都是中心服务器,那么一旦有一个服务器宕机了,那么这个服务器里面的数据不是就访问不到了?
所以可以给每个中心服务器再挂两个从服务器,并且加哨兵,一旦中心服务器宕机,从服务器顶上
3.4总结
所以cluster模式集合了主从模式以及哨兵模式就解决了并发量、单点故障、数据备份的问题
因为我们redis搭建集群后需要解决
数据读写一致(同一个key读写再同一个redis服务器中)的问题(cluster根据算法解决了)
还有单点故障问题(哨兵解决了)
单点故障后从服务器顶上去,需要具备主服务器的数据(主从模式解决了)
相关文章:
Reids集群
目录 一、集群的概念 1.为什么要搭建集群? 2.Redis搭建集群是否需要考虑状态同步的问题? 二、Redis集群的模式 1.redis集群--主从模式 1.1什么是Redis的主从模式? 1.2.主从模式它们之间的数据是怎么实现一个同步的? 1.3.主…...
自定义指令基础
除了 Vue 内置的一系列指令 (比如 v-model 或 v-show) 之外,Vue 还允许你注册自定义的指令 (Custom Directives) 选项式API_自定义指令 <template><h3>自定义指令</h3><p v-author>文本信息</p> </template> <script> e…...
软考-高级-系统架构设计师教程(清华第2版)【第5章 软件工程基础知识(190~233)-思维导图】
软考-高级-系统架构设计师教程(清华第2版)【第5章 软件工程基础知识(190~233)-思维导图】 课本里章节里所有蓝色字体的思维导图...
Oneid方案
一、前文 用户画像的前提是标识出用户,存在以下场景:不同业务系统对同一个人的标识,匿名用户行为的行为归因;本文提供多种解决方案,提供大家思考。 二、方案矩阵 三、其他 相关连接: 如何通过图算法能力获…...
【超好用的工具库】hutool-all工具库的基本使用
简介(可不看): hutool-all是一个Java工具库,提供了许多实用的工具类和方法,用于简化Java开发过程中的常见任务。它包含了各种模块,涵盖了字符串操作、日期时间处理、加密解密、文件操作、网络通信、图片处…...
趣学python编程 (一、计算机基础知识科普)
未来是高度科技化和智能化的时代。过去不识字的叫“文盲”,如今不懂点计算机知识,则可能是新时代的“文盲”。不论从事什么行业,了解下计算机和编程都是有益的。Python 连续多年占据最受欢迎的编程语言榜首,未来Python有机会成为像…...
亚马逊云科技云存储服务指南
文章作者:Libai 高效的云存储服务对于现代软件开发中的数据管理至关重要。亚马逊云科技云存储服务提供了强大的工具,可以简化工作流程并增强数据管理能力。 亚马逊云科技开发者社区为开发者们提供全球的开发技术资源。这里有技术文档、开发案例、技术专栏…...
随机链表的复制
文章目录 🍉前言🍉题目🍉分析🍉思路一:暴力解法🍉思路二:很绝的办法 🍉前言 果然,力扣的简单题不一定简单,但是中等和较难的题一定很麻烦。 这道题相当综合&…...
树莓派4b编译FFmpeg支持硬件编解码
ffmpeg h264_omx解码器充分发挥树莓派gpu性能 准备 树莓派4b ,64位系统 修改树莓派的启动设置文件(/boot/config.txt)进行如下的调整: gpu_mem=256 framebuffer_depth=16安装依赖 常规依赖: sudo apt update sudo apt upgrade sudo apt -y install autoconf automake …...
开启CentOS/Debian自带的TCP BBR加速
BBR 是什么我就不多做介绍了。如果系统自带内核高于4.9 则默认已包含 BBR。 操作方法: 1、使用 root 权限运行下面代码 uname -r //内核版本高于 4.9 就行。2、开启BBR echo "net.core.default_qdiscfq" >> /etc/sysctl.conf echo "net.ip…...
视频推拉流EasyDSS直播点播平台获取指定时间快照的实现方法
视频推拉流直播点播系统EasyDSS平台,可提供流畅的视频直播、点播、视频推拉流、转码、管理、分发、录像、检索、时移回看等功能,可兼容多操作系统,在直播点播领域具有广泛的场景应用。为了便于用户集成、调用与二次开发。 今天我们来介绍下在…...
CSS---关于font文本属性设置样式总结
目录 1、color属性 2、font-size属性 3、font-weight属性 4、font-family属性 5、text-align属性 6、line-height属性 7、text-indent属性 8、letter-spacing属性 9、word-spacing属性 10、word-break属性 11、white-space属性 12、text-transform 12、writing-mo…...
7、使用真机调试鸿蒙项目
此处以华为手机为例,版本为鸿蒙4.0. 一、打开手机调试功能 1、打开开发者模式 打开“设置”—“关于手机”,连续点击“软件版本”可打开开发者模式 2、开启USB调试功能 打开“设置”—“系统更新”—“开发者选项”,下拉找到“USB调试”…...
GPT实战系列-P-Tuning本地化训练ChatGLM2等LLM模型,到底做了什么?(一)
GPT实战系列-如何使用P-Tuning本地化训练ChatGLM2等LLM模型? 文章目录 GPT实战系列-如何使用P-Tuning本地化训练ChatGLM2等LLM模型?P-Tuning微调训练概述1、预训练模型或者是torch模型2、训练器的超参数3、数据预处理工具4、加载数据5、分词处理6、数据预…...
【Python】爬虫代理IP的使用+建立代理IP池
目录 前言 一、代理IP 1. 代理IP的获取 2. 代理IP的验证 3. 代理IP的使用 二、建立代理IP池 1. 代理IP池的建立 2. 动态维护代理IP池 三、完整代码 总结 前言 在进行网络爬虫开发时,我们很容易遭遇反爬虫机制的阻碍。为了规避反爬虫机制,我们…...
JS-项目实战-新增水果库存功能实现
1、fruit.js function $(name) {if (name) {//假设name是 #fruit_tblif (name.startsWith("#")) {name name.substring(1); //fruit_tblreturn document.getElementById(name);} else {return document.getElementsByName(name); //返回的是NodeList类型}} }//当…...
mysql 常见操作指令
use k_order – 查看版本 select version(); – 查看所有数据库 show databases; – 查看所有执行引擎 show engines; – 查看当前数据库 select database(); – 查看所有table show tables; – 查看默认存储引擎 SHOW VARIABLES LIKE ‘default_storage_engine’; – 系…...
Vue3 生命周期
如下是Vue3的生命周期函数图: 一、Vue2生命周期和Vue3声明周期的区别 1. Vue2 中,只要创建Vue实例对象而不需要挂载就可以实现beforeCreate 和 created 生命周期函数。 Vue3中必须要将Vue实例对象挂载完成,所有的准备工作做完,…...
rocketmq 安装dashboard1.0.0 mq消息控制台安装 rocketmq控制台安装 rocketmq-dashboard-1.0.0编译安装
1. 官网: 下载 | RocketMQ 2. dashboard安装包位置: 在连接最下面,点击download.zip即可 3. 需要安装maven, 编译命令: mvn clean install -U -Dmaven.test.skiptrue4. 启动jar: java -jar rocketmq-dashboard-1.0.0.jar &…...
常见的数据结构有哪些?
数据结构分为逻辑结构和物理结构。 逻辑结构:指数据元素之间逻辑关系的数据结构,这里的逻辑关系是指数据元素之间的前后间关系,与数据在计算机中的存储位置无关。物理结构:指数据的逻辑结构在计算机存储空间中的存放形式称为数据…...
DBeaver宏参数验证终极指南:确保数据库宏输入安全的完整方法
DBeaver宏参数验证终极指南:确保数据库宏输入安全的完整方法 【免费下载链接】dbeaver DBeaver 是一个通用的数据库管理工具,支持跨平台使用。* 支持多种数据库类型,如 MySQL、PostgreSQL、MongoDB 等;提供 SQL 编辑、查询、调试等…...
nli-distilroberta-base零基础上手:非算法工程师也能部署的逻辑推理服务
nli-distilroberta-base零基础上手:非算法工程师也能部署的逻辑推理服务 1. 项目介绍 nli-distilroberta-base是一个基于DistilRoBERTa模型的自然语言推理(NLI)服务,专门为没有算法背景的开发者设计。它能帮你快速判断两个句子之间的逻辑关系ÿ…...
SillyTavern角色系统全解析:从基础构建到高级定制
SillyTavern角色系统全解析:从基础构建到高级定制 【免费下载链接】SillyTavern LLM Frontend for Power Users. 项目地址: https://gitcode.com/GitHub_Trending/si/SillyTavern 引言:当AI角色拥有"灵魂" 想象一下,你正在…...
Kotaemon在教育培训中的应用:如何构建可信赖的学科答疑助手?
Kotaemon在教育培训中的应用:如何构建可信赖的学科答疑助手? 1. 教育场景中的AI答疑痛点 想象这样一个场景:晚自习教室里,一个学生正为生物作业发愁。他在手机上输入:"光合作用的暗反应发生在叶绿体的哪个部位&…...
使用Pi0具身智能开发教育机器人的完整指南
使用Pi0具身智能开发教育机器人的完整指南 1. 引言 教育领域正在经历一场智能化变革,传统的教学模式已经难以满足个性化学习的需求。想象一下,一个能够理解学生情绪、提供个性化辅导、并且24小时在线的教育助手——这就是教育机器人带来的可能性。 Pi…...
OpenMP vs C++ 线程池:到底该用谁?
在 C 多线程并行编程中,OpenMP 和线程池是最常用的两种方案。很多开发者都会陷入困惑:同样是实现多线程加速,到底该选 OpenMP 还是 C 线程池?有人觉得 OpenMP 一行代码就能并行,简单高效;也有人偏爱线程池的…...
GTE中文-large多任务能力展示:同一输入文本同步输出NER标签+情感得分+分类结果
GTE中文-large多任务能力展示:同一输入文本同步输出NER标签情感得分分类结果 提示:本文展示的GTE中文-large模型多任务能力基于ModelScope的iic/nlp_gte_sentence-embedding_chinese-large镜像实现,所有示例均为真实运行结果。 1. 多任务模型…...
【毕业设计】SpringBoot+Vue+MySQL 兴顺物流管理系统平台源码+数据库+论文+部署文档
摘要 随着电子商务和全球贸易的快速发展,物流行业在现代经济体系中的重要性日益凸显。高效、智能的物流管理系统能够显著提升企业的运营效率,降低管理成本,并优化客户体验。然而,传统的物流管理方式仍存在信息孤岛、数据冗余、流程…...
终极指南:Navicat Premium Mac版无限试用重置的完整解决方案
终极指南:Navicat Premium Mac版无限试用重置的完整解决方案 【免费下载链接】navicat_reset_mac navicat16 mac版无限重置试用期脚本 项目地址: https://gitcode.com/gh_mirrors/na/navicat_reset_mac 还在为Navicat Premium试用期到期而烦恼吗?…...
CMock函数模拟全解析:从ExpectAndReturn到Callback的高级用法指南
CMock函数模拟全解析:从ExpectAndReturn到Callback的高级用法指南 单元测试是软件开发中不可或缺的一环,而C语言开发者常常面临一个难题:如何有效地测试那些依赖外部系统或复杂模块的函数?这正是CMock大显身手的地方。作为Ceedlin…...
