Redis的三种部署方案

文章目录

  • 单机模式
  • 主从复制
  • 哨兵模式
  • 分片集群

在Redis中提供的集群方案总共有三种:单机模式,主从复制集群、哨兵模式,Redis分片集群

单机模式

Redis 只运行在一台服务器上,并且所有的数据都存储在这一台服务器的内存中。

主从复制

搭建主从复制集群解决的是高并发读问题。
单个Redis节点的并发能力有限,要进一步提高Redis的并发能力,可以搭建主从复制集群,实现读写分离。主节点负责写入数据,从节点负责读数据,主节点把数据同步到从节点中。

主从复制的流程:
我们先来了解两个概念:

全量同步:主节点会将当前数据库的完整状态发送给从节点,通常通过发送一个数据库快照(如 Redis 中的 RDB 文件)来实现。
增量同步:主节点只传输自上次同步以来的写操作记录给从节点,从节点根据这些记录来更新自身的数据状态。

1。从节点和主节点建立连接,并把replication id和offset偏移量发送给主节点
2。主节点接收replication id和offset偏移量,根据replication id不同发现是第一次同步,是第一次同步就会把自身replication id和offest发送给从节点让主从信息保持一致,与此同时,主节点会执行bgsave,生成rdb文件后发送给从节点,进行一次全量同步。
3。之后同步数据都是增量同步,从节点把自身offset偏移量发送给主节点,主节点对照自身的offest从命令日志中获取offset值之后的数据,发送给从节点进行数据同步。

从节点重启之后也会执行增量同步

哨兵模式

哨兵模式可以看作是主从复制模式的补充.
哨兵模式用于监控 Redis 主从复制集群中的节点,并在主节点失效时自动将其中一个从节点晋升为新的主节点,以确保系统的可用性。哨兵通过定期向节点发送 PING 命令来检测节点的状态。

哨兵模式解决的是redis的高可用性问题。(高可用性是指系统能够在长时间内正常运行而不中断的能力)

分片集群

在这里插入图片描述

分片集群通常配合内置的主从复制使用。

主从复制和哨兵模式无法解决的问题:
海量存储问题:虽然有一主多从,但存储的数据是一样的,无法解决海量存储问题。
高并发写问题:一主多从,主负责写入,无法解决高并发性写问题。

分片集群的作用
分片集群主要解决的是,海量数据存储的问题,和高并发写问题,集群中有多个master,每个master保存不同数据,并且还可以给每个master设置多个slave节点,就可以继续增大集群的高并发能力。同时每个master之间通过ping监测彼此健康状态,就类似于哨兵模式了。当客户端请求可以访问集群任意节点,最终都会被转发到正确节点。

Redis分片集群中数据是怎么存储和读取的?
Redis 集群引入了哈希槽的概念,有 16384 个哈希槽,集群中每个主节点绑定了一定范围的哈希槽范围, key通过 CRC16 校验后对 16384 取模来决定放置哪个槽,通过槽找到对应的节点进行存储。

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

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

相关文章

ROC指标交易成功,不是了解优点WeTrade众汇更正视缺点

在上篇文章中,我们了解什么是ROC指标同时也了解了ROC指标的优势,但在WeTrade众汇看来如果真正的想使用ROC指标交易成功,在了解ROC指标优点的基础上,我们更应该正视 ROC指标的缺点,我们才能在交易的路上走的更远。 下面…

JavaScript逆向爬虫——无限debugger的原理与绕过

debugger 是 JavaScript 中定义的一个专门用于断点调试的关键字,只要遇到它,JavaScript 的执行便会在此处中断,进入调试模式。 有了 debugger 这个关键字,就可以非常方便地对 JavaScript 代码进行调试,比如使用 JavaSc…

linux重装系统步骤 包含raid【主要针对服务器重装

重装需要记录的信息 通过管理口进入系统: 1、 使用管理口ip,在浏览器中打开 并登陆进管理口界面 2、 虚拟控制台更改插件类型:如java、HTML5等,会话共享操作选择-完全访问-应用-启动虚拟控制台 需要记录信息如下: …

Linux下场景模拟--cpu、内存打满测试

Linux下场景模拟–cpu、内存打满测试 打满CPU占用 编写脚本vi /root/cpu_run_full.sh vi /root/cpu_run_full.sh填写如下内容&#xff1a; #!/bin/bash function while_run_cpu() {while true;doi2;done }function cpu_full() {for ((i0; i<$1; i));dowhile_run_cpu &am…

Pillow教程11:九宫格切图的实现方法(安排!!!)

---------------Pillow教程集合--------------- Python项目18&#xff1a;使用Pillow模块&#xff0c;随机生成4位数的图片验证码 Python教程93&#xff1a;初识Pillow模块&#xff08;创建Image对象查看属性图片的保存与缩放&#xff09; Pillow教程02&#xff1a;图片的裁…

【JQ】加载中动画效果,带gif图片

效果图 CSS样式 /*加载中*/ #loading-overlay {position: fixed;top: 0;left: 0;right: 0;bottom: 0;background-color: rgba(0, 0, 0, 0.5); /* 半透明背景 */display: flex;justify-content: center;align-items: center; }.loading-container {position: fixed;top: 40%;le…

11.shell中的多进程实践

目录 概述实践代码执行结果 概述 shell中的多进程实践 实践 代码 #!/bin/bash# 多进程实践,以ping为例 # ping 10.35.232.130 -c2 拼两次结束check_host(){host${host_prefix}.$1if ping $host -c1 -W1 ; thenecho "$host可达"elseecho "$host不可达"…

2024/4/2—力扣—二叉树的最近公共祖先

代码实现&#xff1a; 思路&#xff1a; 递归判断左子树和右子树&#xff0c;查找p或者q是否在当前节点的子树上 1&#xff0c;在同一子树上&#xff0c;同一左子树&#xff0c;返回第一个找到的相同值&#xff0c;同一右子树上&#xff0c;返回第一个找到的相同值 2&#xff0…

Godot插值、贝塞尔曲线和Astar寻路

一、插值 线性插值是采用一次多项式上进行的插值计算&#xff0c;任意给定两个值A和B&#xff0c;那么在A和B之间的任意值可以定义为&#xff1a;P(t) A * (1 - t) B * t&#xff0c;0 < t < 1。 数学中用于线性拟合&#xff0c;游戏应用可以做出跟随效果&#xff08;…

一份完整的软件测试报告长什么样

软件测试报告是软件测试阶段的重要输出&#xff0c;它为软件开发团队、客户或管理层等利益相关方提供了详细的测试结果和软件质量评估。一份完整的软件测试报告通常包含以下几个关键部分&#xff1a; 引言和概述&#xff1a;   报告的开始部分通常有一个引言或概述&#xff…

基于单片机室内温湿度监测系统仿真设计

**单片机设计介绍&#xff0c;基于单片机室内温湿度监测系统仿真设计 文章目录 一 概要二、功能设计设计思路 三、 软件设计原理图 五、 程序六、 文章目录 一 概要 基于单片机室内温湿度监测系统仿真设计的沟通概要主要涉及以下几个方面&#xff1a; 一、项目背景与目标 首…

starganvc2变声器项目实战及其源码解读

1.数据与项目文件解读 数据文件目录如下所示&#xff0c;需要注意的是&#xff0c;我们并不能直接对声音进行建模&#xff0c;而需要对声音数据进行预处理&#xff0c;从而得到一系列数值特征&#xff0c;然后对特征进行建模&#xff0c;特征数据存储到processed文件夹中 2.环…