redis主从复制、哨兵、集群

在实际的生活环境中,如果只使用一个redis进行读写操作,那么面对庞大的访问人群是崩溃的,所以可以有几个redis,一个用来做主机,提供修改数据操作,而这个主机用来控制其他redis,即将更新的发送,保证一致性,而其他的redis只能是读操作,无法进行更改数据!

所以大致为一个redis用来写,其他redis复制主redis,但是用户只能读不能写!

那么如何配置呢?


1.在redis.conf中添加 replicaof 主机的ip 端口号

例:

2.在从机中的redis.conf中添加masterauth "主机redis的密码"

例:

如果在运行中想更改关系,比如

A有两个小弟B,C,我们现在让C的主机变为B,可直接使用命令

slaveof 新主库IP 新主库端口

不过如果出现宕机等重启情况,C的主机还是A

因为命令并未更改redis.conf中的配置

从 变为主

slaveof no one

将当前从机变为主机


复制的原理

slave启动,数据清零 当从机的redis启动时,会把自身体的数据清空

首次连接,全量复制 第一次连接会将主机所有数据打包发给从机

保持通信  在每个周期从机给主机发送包保持连接

每次快照,更新从机

从机下线重连,重连续传  master和slave中都有一个offset,根据判断offset来确定从哪个节点重新传输。

缺点:实际中有许多从机,导致主机IO量大,存在复制延时

master挂了后,不能出现临时master替补,无法进行实时操作

由此引入哨兵

哨兵的作用:

1.监控redis的运行状态,包括master和slave

2.当master down机后,自动将slave切换master

保证读写功能稳定

功能

主从监控 消息通知 故障转移 配置中心

哨兵配置sentinel.conf

启动

redis-sentinel sentinel.conf(文件名) --sentinel

相关问题

如果master宕机两台数据能否访问?

不能,此时需通过哨兵选择新的master后才可以继续访问

之前down机的master恢复后,还会不会是老大?

不会,变为slave,只能读不能写


哨兵流程

哨兵监控多个redis运行

当哨兵发现master超过配置的时间未响应包时,便会投票认为该masterdown机

当哨兵投票个数超过指定时,便认为该master宕机

由哨兵组选出一个哨兵将该master移出,并在slave中选出新的master

选新master流程为:

从master下的slave中按条件挑选

权限高>偏移量大(之前复制master的数据最多,完整性最好)>id号

选出的slave 执行slaveof no one变换为master

将原master下的slave归并到新的master,

当已下线的master上线时,新master对其发送slaveof指令将其变为slave。

集群哨兵+主从复制:并不能保证数据的不丢失,所以引出了redis集群

redis集群:提供多个redis节点间共享数据的程序集,支持多个master

用处:

支持多个master,一个down机可用其他master继续修改数据

无需哨兵功能

客户端只需连接集群中某个节点

通过redis槽位实现数据的分布式存储


分片的方法:

取余分片:通过哈希函数转换成值再对某数取余,得到存放位置

缺点,如果出现down机等情况会导致数据混乱,因为取余的数字发生改变

一致性哈希算法:将所有节点和键值对映射到一个环形的哈希空间中,通常是一个虚拟的圆环。这个圆环的范围是从0到最大哈希值。每个节点被映射到环上的一个点,而键值对也被映射到环上的相应位置。当查找一个键时,算法会沿着圆环顺时针方向查找最近的一个节点,然后将键值对存储在这个节点上。

优点:加入和删除节点只会影响哈希环中顺时针方向的相邻节点

缺点:存在数据倾斜的情况(某个点数据特别多)


CRC16算法

产生的hash值有16bit(65536个),但为什么用16384呢?

1.槽位为65536会导致发送的ping包过大

2.redis集群主节点不可能超过1000个,所以够用

3.槽位越小,节点少情况下方便压缩,容易传输

redis集群不保证数据一致性(因为一个redis收到命令后会异步同步给其他redis,此过程中可能出现down机导致数据不一致)

防止路由失效加-c

info replication 查看当前redis的主从关系

cluster failover 主从关系调整

redis-cli -a 密码 --cluster add-node 新机:端口 旧机:端口

redis-cli -a 密码 --cluster add-node ip:新slave端口 ip:新master端口 --cluster-slave --cluster-master-id 新主机节点ID

reshard(重新分派槽号)各个主机都分部分坑位给新的节点,故新节点槽位段数会有多个。

删除节点 redis-cli -a 密码 --cluster del-node Ip:从机ip+端口 从机6388节点ID

在集群条件下不能进行set等多元素操作,因为操作数据必须在同一个槽中。

可以通过分组进行多组操作

例: mset k1{x} v1  k2{x} v2 这里{x}表示为一个名为x的分组

cluster keyslot 键名 查看该键在哪个槽位

感谢观看!!!

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

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

相关文章

【七】【QT开发应用】跨UI发送信号,跨线程发送信号

跨UI发送信号 基本框架 新建窗口 自定义信号 跨线程发送信号 新建线程 查看线程号 完整代码 跨UI发送信号 setdialog.h #ifndef SETDIALOG_H #define SETDIALOG_H#include <QDialog>namespace Ui { class setdialog; }class setdialog : public QDialog {Q_OBJECTpub…

【Python】已解决:ModuleNotFoundError: No module named ‘paddle’

文章目录 一、分析问题背景二、可能出错的原因三、错误代码示例四、正确代码示例五、注意事项 已解决&#xff1a;ModuleNotFoundError: No module named ‘paddle’ 一、分析问题背景 在Python编程中&#xff0c;ModuleNotFoundError是一个常见的错误&#xff0c;它通常发生…

C语言的数据结构:树与二叉树(树篇)

前言 之前所学到的数据结构都是线性结构特征&#xff0c;所谓线性就是在结构上&#xff0c;将节点连接起来时&#xff0c;像一条线一样。如链表则是上一个节点包含下一个节点地址的指针&#xff0c;这样依次下去。而串、队列、栈则实现方式都依赖于链表或顺序表而实现&#xf…

Inception_V2_V3

Inception_V2_V3 CNN卷积网络的发展史 1. LetNet5(1998) 2. AlexNet(2012) 3. ZFNet(2013) 4. VGGNet(2014) 5. GoogLeNet(2014) 6. ResNet(2015) 7. DenseNet(2017) 8. EfficientNet(2019) 9. Vision Transformers(2020) 10. 自适应卷积网络(2021) 上面列出了发展到现在CNN的…

智能优化算法改进策略之局部搜索算子(三)—二次插值法

1、原理介绍 多项式是逼近函数的一种常用工具。在寻求函数极小点的区间&#xff08;即寻查区间&#xff09;上&#xff0c;我们可以利用在若干点处的函数值来构成低次插值多项式&#xff0c;用它作为求极小点的函数的近似表达式&#xff0c;并用这个多项式的极小点作为原函数极…

示例:推荐一个基于第三方开源控件库DataGridFilter封装的FilterColumnDataGrid,可以像Excel拥有列头筛选器

一、目的&#xff1a;基于第三方开源控件库DataGridFilter封装的FilterColumnDataGrid&#xff0c;可以像Excel拥有列头筛选器&#xff0c;感兴趣的可以去下方链接地址查看开源控件库地址。本控件封装的目的在于将第三方库的皮肤和样式封装到皮肤库中可统一设置样式&#xff0c…

Day 31:100334. 包含所有1的最小矩形面积Ⅰ

Leetcode 100334. 包含所有1的最小矩形面积Ⅰ 给你一个二维 **二进制 **数组 grid。请你找出一个边在水平方向和竖直方向上、面积 最小 的矩形&#xff0c;并且满足 grid 中所有的 1 都在矩形的内部。 返回这个矩形可能的 **最小 **面积。 确定首次出现 1 的第一行 top&#xf…

转让神州开头的无区域科技公司需要多少钱

您好&#xff0c;我公司现有2家无区域神州名称的公司转让。所谓无区域名称是公司名称中不带有行政区划、及行业特点的公司名称&#xff0c;都是需要在工商总,局核准名称的&#xff0c;对于民营企业来说也比较喜欢这种名称名称很大气&#xff0c;现在重核更严格了&#xff0c;所…

报错:mAP数据为0%+无法读取output里的图片红色警告

debug检查&#xff1a;发现创建的output和input的路径不在同一级 操作1&#xff1a;修改output创建路径为绝对路径后&#xff0c;output和input文件成功在同一级&#xff0c;但问题仍存在 debug检测&#xff1a;识别的类别和保存的类别不同&#xff0c;没有保存数据 操作2&…

WMS项目测试点

这里写目录标题 最后附有图片 仓库系统 仓库 / 库区 仓库 新增仓库 编号 必填校验 字段长度校验 20为字符 数据类型校验 名称 必填校验 字段长度校验 20为字符 数据类型校验 备注 填写备注校验 字符长度限制 不填写备注校验 新增仓库之后是否可以通过查询仓库名称和仓库编号查询…

linux系统cpu飙高如何排查

1.通过top命令查看cpu占比较高的进程ID 2.通过top -H -p <进程ID>命令查看该进程中具体线程&#xff0c;可以看到第一个线程 4311 占用了88.2%的cpu 3.通过 printf "%x\n" <线程ID> 把10进制的线程id转为16进制 4.通过jstack <进程ID> | grep &…

体检项目里的中文名称和英文简称

在做驾驶员体检、健康证等体检时&#xff0c;会看到不同的体检项目名称&#xff0c;比如有身高、体重、眼睛视力、耳鼻喉、肝功能、心电图等。     在体检之前的一周&#xff0c;要注意休息好、清淡饮食。晚上10点之前入睡&#xff0c;不要熬夜。贝壳类食物&#xff0c;比如花…

本地离线模型搭建指南-RAG架构实现

搭建一个本地中文大语言模型&#xff08;LLM&#xff09;涉及多个关键步骤&#xff0c;从选择模型底座&#xff0c;到运行机器和框架&#xff0c;再到具体的架构实现和训练方式。以下是一个详细的指南&#xff0c;帮助你从零开始构建和运行一个中文大语言模型。 本地离线模型搭…

云手机在跨平台兼容性方面优势明显?有何应用场景

跨平台设备间无缝切换和数据同步的需求现在是很多人或者企业都需要的&#xff0c;云手机在这些方面似乎有很大优势&#xff1f;下面我们来具体探讨在兼容方面&#xff0c;云手机有何出彩之处&#xff1f;又支持哪些应用场景呢 先来说说云手机跨平台兼容性优势所在&#xff0c;要…

动态规划——活动安排问题II(C++)

Take it easy! 2024年6月19日 题目描述 假设有n个活动和一个资源&#xff0c;每个活动执行时都需要占用该资源&#xff0c;并且该资源在任何时间只能被一个活动所占用&#xff0c;一旦某个活动开始执行&#xff0c;中间将不能被打断&#xff0c;直到其执行完毕。每个活动i都有…

WordPress主题仿虎嗅网/雷锋网自媒体主题(两套打包)

主题介绍 这两款wordpress主题是精仿虎嗅网和雷锋网的&#xff0c;这两款主题应该是没有多大BUG&#xff0c;同时这两款主题目前跟现在的虎嗅、雷锋两个网站看上去并没有多大区别&#xff0c;唯一美中不足的就是不支持PHP7.0以上。经常逛虎嗅网与雷锋网的同志应该是喜欢这两款…

Spring框架的核心原则和IoC容器介绍

Spring框架是一个开源的应用程序框架&#xff0c;它遵循以下核心原则&#xff1a; 1.Inversion of Control&#xff08;控制反转&#xff09;: Spring框架通过IoC容器管理对象的生命周期和依赖关系&#xff0c;而不是由程序代码直接创建对象。这样可以降低组件之间的耦合度&…

阅读笔记:明朝那些事儿妖孽横行的宫廷

明朝那些事儿第四部看完了&#xff0c;合上书本给我印象比较深刻的文臣要数王守仁&#xff0c;不愧为明朝的军事家&#xff0c;思想家&#xff0c;文学家&#xff0c;教育家&#xff0c;他经过多年的思索、磨难、追求&#xff0c;终于有一天&#xff0c;在穷乡僻壤&#xff0c;…

UEC++ 虚幻5第三人称射击游戏(一)

UEC 虚幻5第三人称射击游戏&#xff08;一&#xff09; 创建一个空白的C工程 人物角色基本移动 创建一个Character类添加一些虚幻商城中的基础动画 给角色类添加Camera与SPringArm组件 UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category "SpringArm")clas…

设计软件有哪些?贴图插件篇(1),渲染100邀请码1a12

设计师经常要处理贴图&#xff0c;这里介绍一些贴图所用到的插件。 1、Substance 3D Painter Substance 3D Painter是Substance 3D软件套件中的一部分&#xff0c;是一款专业的纹理绘制软件。它提供了直观的界面和强大的工具&#xff0c;用于在3D模型上进行高质量的纹理绘制和…