当前位置: 首页 > news >正文

Redis高可用性详解

 

目录

​编辑

高可用性:

主从复制(Master-Slave Replication):

主从复制的一般工作流程:

哨兵模式(Sentinel Mode):

哨兵模式的一般工作流程:

集群模式(Cluster Mode):

集群模式的一般工作流程:

总结:


高可用性:

Redis是一种流行的开源内存数据库,被广泛用于缓存、会话存储和消息传递等场景。在构建高可用性的Redis架构时,可以采取以下几个关键步骤:

  1. 主从复制(Master-Slave Replication):Redis支持主从复制机制,其中一个Redis实例作为主节点(master),负责处理写入操作,而其他实例作为从节点(slave),负责复制主节点的数据。主从复制提供了数据冗余和读取负载均衡的功能。当主节点发生故障时,可以将一个从节点升级为主节点,确保系统的持续可用性。

  2. 哨兵模式(Sentinel Mode):Redis哨兵模式是一种自动故障转移和监控机制,用于管理多个Redis实例。哨兵进程会监控Redis实例的健康状态,当主节点宕机时,会自动将一个从节点升级为主节点,并更新其他从节点的配置。哨兵模式提供了故障检测和自动切换的能力,保证系统的高可用性。

     

  3. 集群模式(Cluster Mode):Redis集群模式是一种分布式架构,可以将数据分散存储在多个节点上。每个节点负责存储部分数据,并通过内部通信协议进行数据交互。集群模式提供了横向扩展和负载均衡的能力,可以处理大规模的数据和请求。如果集群中的某个节点故障,其他节点可以继续提供服务,确保系统的可用性。

主从复制(Master-Slave Replication):

当使用Redis时,主从复制(Master-Slave Replication)是一种常用的数据复制和冗余机制。主从复制允许将一个Redis实例(主节点)的数据复制到其他Redis实例(从节点),从而实现数据的冗余备份、读取负载均衡和故障恢复的功能。在Redis主从复制中,主节点负责处理所有写入操作,而从节点复制主节点的数据,并处理读取请求。

主从复制的一般工作流程:

  1. 配置主从关系:首先,需要在Redis的配置文件中分别配置主节点和从节点。主节点的配置需要设置slaveof指令,指定从节点的IP地址和端口。从节点的配置需要设置slave指令,指定主节点的IP地址和端口。

  2. 初始全量复制:当从节点启动时,它会连接主节点,并发送一个同步请求。主节点接收到请求后,会执行一个后台的RDB持久化操作,将数据保存到磁盘并发送给从节点。从节点接收到数据后,会加载并构建与主节点相同的数据集。

  3. 增量复制:一旦初始全量复制完成,主节点会将每个写操作的数据变更发送给从节点。从节点会接收并应用这些变更,以保持与主节点的数据一致性。Redis使用异步复制机制,即主节点不会等待从节点确认复制操作,因此从节点的复制延迟可能存在一定的时间差。

  4. 读取负载均衡:应用程序可以通过向主节点写入数据,并从任意的从节点读取数据,以实现读写分离和负载均衡。通过将读操作分摊到多个从节点上,可以提高系统的并发性和吞吐量。

  5. 故障转移:当主节点发生故障时,可以手动或自动将一个从节点升级为新的主节点。在故障转移过程中,需要修改从节点的配置,使其成为新的主节点,并让其他从节点复制新的主节点。一旦故障主节点恢复,可以将其重新配置为从节点,并加入到新的主节点中。

主从复制在Redis中的应用场景非常广泛。它提供了数据冗余和读取负载均衡的能力,同时增加了系统的可用性和扩展性。通过合理配置主从复制,可以构建高可用性的Redis架构,保护数据并提供稳定的服务。

哨兵模式(Sentinel Mode):

是一种用于管理和监控Redis实例的自动故障转移机制。哨兵模式通过监控Redis实例的状态,检测主节点故障,并自动将一个从节点升级为新的主节点,以确保系统的高可用性。

哨兵模式的一般工作流程:

  1. 配置哨兵节点:首先,需要选择一个或多个Redis实例作为哨兵节点,这些节点负责监控和管理Redis主从关系。每个哨兵节点都会连接到Redis实例,并定期发送心跳检测,以确保与实例的连接正常。

  2. 监控主节点:哨兵节点会通过发送命令和接收回复的方式,持续监控主节点的状态。它们会检查主节点是否正常运行、网络连接是否断开以及主节点是否过载等情况。

  3. 故障检测:当哨兵节点检测到主节点故障时,它们会开始进行故障检测。哨兵节点会互相通信,收集关于主节点状态的信息,并进行投票决策。如果大多数哨兵节点都认为主节点失效,那么故障会被确认。

  4. 选举新主节点:一旦主节点故障被确认,哨兵节点会选择一个从节点作为新的主节点。它们会考虑从节点的复制偏移量(replication offset)和优先级等因素,选择出一个最适合的从节点升级为主节点。

  5. 更新配置信息:哨兵节点会更新所有Redis实例的配置文件,将新的主节点信息通知给从节点和其他哨兵节点。从节点会重新连接到新的主节点,并开始复制新的数据集。其他哨兵节点也会更新其内部状态,以反映新的主从关系。

  6. 故障恢复:一旦新的主节点选举完成并配置更新完成,系统将恢复正常运行。客户端可以通过连接到新的主节点来进行读写操作,而旧的主节点(如果修复)可以作为从节点加入到新的主节点中。

哨兵模式提供了自动故障转移和监控的能力,可以在主节点故障时快速恢复系统的可用性。它通过多个哨兵节点的协作,实现了故障检测、选举新主节点和更新配置信息等关键步骤。这样,Redis可以在单点故障的情况下保持高可用性,并提供可靠的服务。

集群模式(Cluster Mode):

是一种分布式架构,用于扩展Redis并提供高可用性的解决方案。在集群模式下,数据被分片存储在多个Redis节点上,并通过内部通信协议进行数据交互,从而实现水平扩展和负载均衡。

集群模式的一般工作流程:

  1. 配置集群节点:首先,需要选择一组Redis实例作为集群节点,并对其进行配置。每个节点都必须具有唯一的节点标识和监听端口。在配置文件中,需要指定集群节点的IP地址、端口和节点标识等信息。

  2. 创建集群:使用Redis提供的redis-trib.rb工具或其他第三方工具,可以创建Redis集群。在创建过程中,需要将所有节点的地址和端口信息提供给工具,工具将会自动进行集群初始化。

  3. 数据分片:集群中的数据会被分片存储在不同的节点上。Redis使用哈希槽(hash slots)的概念来划分数据,一共有16384个哈希槽。集群中的每个节点负责管理一部分哈希槽,并存储对应的数据。

  4. 客户端路由:当客户端发送写入或读取请求时,它们会根据数据的键(key)计算哈希槽,并将请求路由到负责该哈希槽的节点上。客户端可以直接连接到集群中的任意节点,节点会负责将请求转发给正确的节点进行处理。

  5. 节点间通信:集群节点之间通过内部通信协议进行数据交互。节点之间会进行消息广播、状态同步和数据迁移等操作,以保持集群的一致性和可用性。如果有节点离线或加入集群,其他节点会进行自动的重新分配哈希槽和数据迁移。

  6. 故障恢复:当集群中的某个节点发生故障时,Redis会自动进行故障转移。集群中的其他节点会检测到故障节点的离线,并将负责的哈希槽重新分配给其他节点。这样可以保证数据的可用性,并且集群可以继续正常运行。

Redis集群模式提供了横向扩展和负载均衡的能力,可以处理大规模的数据和请求。它使用哈希槽的数据分片方式,将数据均匀地分布在多个节点上,从而实现数据的分散存储和并行处理。通过增加节点数量,可以进一步扩展集群的容量和性能。

总结:

除了上述步骤,还可以采取其他措施,如使用故障切换技术、合理配置Redis参数、优化网络和硬件资源等,以提高Redis的高可用性。

相关文章:

Redis高可用性详解

目录 ​编辑 高可用性: 主从复制(Master-Slave Replication): 主从复制的一般工作流程: 哨兵模式(Sentinel Mode): 哨兵模式的一般工作流程: 集群模式&#xff08…...

MySQL(1) ---- 数据库介绍与MySQL概述

介绍 1、什么是数据库? 数据库:DateBase(DB),是存储和管理数据的仓库。数据库管理系统:DataBase Management System(DBMS),操纵和管理数据库的大型软件。SQL&#xff1…...

面试题之软件测试流程

说说公司的软件测试流程,这,是常考的面试题之一。 不同公司的流程不一样,现状决定流程,没有绝对的对错。 以结果为导向,保证产品质量,提高测试效率,才是王道。 以下的流程为业界比较标准的流程&…...

MyBatis中#{}与${}的区别,与各自的应用场景

#{}和${}的区别: #{}: 底层使用PreparedStatement。特点:先进行SQL语句的编译,然后给SQL语句的占位符问号?传值。可以避免SQL注入的风险。 ${}:底层使用Statement。特点:先进行SQL语句的拼接,然后再对SQL语…...

泛型类相关

package com.test.test02;/* * GenericTest就是一个普通的类 * GenericTest<E>就是一个泛型类 * <>里面就是一个参数类型&#xff0c;但是这个类型是什么呢&#xff1f;这个类型现在是不确定的&#xff0c;相当于一个占位。 * 但是现在确定的是这个类型一定是一…...

一文速学数模-季节性时序预测SARIMA模型详解+Python实现

目录 前言 一、季节时间序列模型概述 二、SARIMA模型定义 三.SARIMA模型算法原理...

二叉树与图(C++刷题笔记)

二叉树与图&#xff08;C刷题笔记&#xff09; 113. 路径总和 II 力扣 从根节点深度遍历二叉树&#xff0c;先序遍历时&#xff0c;将节点存储至path栈中&#xff0c;使用path_val累加节点值 当遍历到叶子节点&#xff0c;检查path_val是否为sum&#xff0c;若是&#xff0c…...

STM32-ADC多通道输入实验

之前已经介绍了几个ADC的笔记和实验了&#xff0c;链接如下&#xff1a; 关于ADC的笔记1_Mr_rustylake的博客-CSDN博客 STM32-ADC单通道采集实验_Mr_rustylake的博客-CSDN博客 STM32-单通道ADC采集&#xff08;DMA读取&#xff09;实验_Mr_rustylake的博客-CSDN博客 接下来…...

javaIO流之文件流

目录 简介一、File的构造方法二、File的常用方法1、获取功能的方法2、绝对路径和相对路径3、判断功能的方法4、创建、删除功能的方法5、目录的遍历6、递归遍历 三、RandomAccessFile1、主要方法 四、Apache FileUtils 类1、复制文件或目录&#xff1a;2、删除文件或目录&#x…...

DMA-STM32

DMA-STM32 DMA(Direct Memory Access)直接存储器存取 DMA可以提供外设和存储器或者存储器和存储器之间的高速数据传输&#xff0c;无须CPU干预&#xff0c;节省了CPU的资源 12个独立可配置的通道:DMA1 (7个通道),DMA2 (5个通道) 每个通道都支持软件触发和特定的硬件触发 STM32…...

代码随想录算法训练营第二十七天|39. 组合总和、40.组合总和II、131.分割回文串

目录 39. 组合总和 40.组合总和II 131.分割回文串 39. 组合总和 本题是 集合里元素可以用无数次&#xff0c;那么和组合问题的差别 其实仅在于 startIndex上的控制 题目链接/文章讲解&#xff1a;代码随想录 视频讲解&#xff1a;带你学透回溯算法-组合总和&#xff08;对应…...

泛型(Generic) <? extends T>,<? super T>

通配符边界引入背景 使用泛型的过程中&#xff0c;经常出现一种很别扭的情况。我们有 Fruit 类&#xff0c;和它的派生类 Apple 类。 class Fruit {}class Apple extends Fruit {}然后有一个最简单的容器&#xff1a;Plate 类。盘子里可以放一个泛型的 “东西”. class Plat…...

数云融合|数字化转型中的利器:揭秘云技术的重要角色

数字化转型不仅是一个流行语&#xff0c;而是一项真正能够改变你的业务流程并提高客户参与度的重要战略。要实现数字化转型&#xff0c;必须重新构建业务流程&#xff0c;同时利用AI、物联网、AR、ML、大数据分析等先进技术不断提升客户参与度。这就需要利用云技术提供的强大计…...

Linux篇2

Linux 0. 终端提示信息1. 文件目录结构1.1 文件目录 2. 文本编辑器VI/VIM2.1 VIM编辑器2.1 一般模式2.2 编辑模式2.3 命令模式 3. 网络配置3.1 VMware提供的三种网络连接模式3.2 静态配置网络IP地址3.3 配置主机名3.3.1 修改主机名3.3.2 配置主机名-IP地址映射关系&#xff1a;…...

《微服务实战》 第九章 Gitlab使用

前言 微服务项目,常常需要多人协作完成工作,本章教程是介绍Gitlab使用,使多人协作告别低端的手动拷贝,也告别传统的SVN。 1、下载安装git https://git-scm.com/download/win 1.1、安装好以后,cmd中输入git 2、生成ssh-key ssh-keygen -t rsa -C “zhangsan@163.com”…...

KMP匹配算法

目录 一、暴力匹配法动画演示代码实现 二、KMP算法的概念三、KMP算法的应用题目代码实现 一、暴力匹配法 动画演示 时间复杂度为&#xff1a; O ( m ∗ n ) O(m * n) O(m∗n) 代码实现 #define _CRT_SECURE_NO_WARNINGS #include <iostream> using namespace std;int…...

ClickHouse笔记: Ubuntu/Centos下的安装, 配置和用户管理

ClickHouse ClickHouse 属于 OLAP 数据库 OLTP 与 OLAP OLTP (On-Line Transaction Processing 联机事务处理), 注重事务处理, 数据记录的性能和安全性OLAP (On-Line Analytical Processing 联机分析处理), 注重数据分析, 重点在查询的性能 一般使用 OLTP 数据库做业务数据…...

网络编程——UDP编程

UDP编程 UDP编程步骤通信流程serverclient 函数接口socketbindrecvfromsendto 举例UDP客户端UDP服务器 UDP编程步骤 在C语言中进行UDP编程的一般步骤如下&#xff1a; &#xff08;1&#xff09;包含头文件&#xff1a; 在代码中包含必要的头文件&#xff0c;以便使用UDP编程所…...

linux内核篇-进程及其调度

介绍一个程序从源文件到进程执行的过程 1、编译链接&#xff08;源文件到二进制文件&#xff09; Linux 下面二进制的程序也要有严格的格式&#xff0c;称为ELF&#xff08;Executeable and Linkable Format&#xff0c;可执行与可链接格式&#xff09; &#xff0c;这个格式可…...

C#开发的OpenRA游戏之基地工程车执行部署命令

C#开发的OpenRA游戏之基地工程车执行部署命令 前面已经分析接收到网络命令后,可以拿到多个命令对象, 通过命令对象进行遍历,最终会在比较部署命令的类里相同,从而执行部署命令。 可见,网络游戏里的对象操作,都是通过网络发送给服务器,再从服务器返回消息来执行对象的动…...

基于 Flickr30k-Entities 数据集 的 Phrase Localization

以下示例基于 Flickr30k-Entities 数据集中的标注&#xff0c;以及近期&#xff08;以 TransVG &#xff08;Li et al. 2021&#xff09;为例&#xff09;在短语定位&#xff08;Phrase Grounding&#xff09;任务上的评测结果&#xff0c;展示了单张图片中若干名词短语的定位情…...

功能丰富的PDF处理免费软件推荐

软件介绍 今天给大家介绍一款超棒的PDF工具箱&#xff0c;它处理PDF文档的能力超强&#xff0c;而且是完全免费使用的&#xff0c;没有任何限制。 TinyTools&#xff08;PC&#xff09;这款软件&#xff0c;下载完成后即可直接打开使用。在使用过程中&#xff0c;操作完毕后&a…...

分类预测 | Matlab实现CNN-LSTM-Attention高光谱数据分类

分类预测 | Matlab实现CNN-LSTM-Attention高光谱数据分类 目录 分类预测 | Matlab实现CNN-LSTM-Attention高光谱数据分类分类效果功能概述程序设计参考资料 分类效果 功能概述 代码功能 该MATLAB代码实现了一个结合CNN、LSTM和注意力机制的高光谱数据分类模型&#xff0c;核心…...

测试工程师学LangChain之promptTemplate 实战笔记

一、引言:大模型时代的测试自动化革命 2025 年,随着大模型(如 DeepSeek)在自动化测试领域的广泛应用,Prompt 编写已成为测试工程师的核心技能之一。 为什么? 大模型输出的质量 90% 取决于输入的 PromptLangChain 的 PromptTemplate 提供了参数化 Prompt 的标准化方案Ope…...

Oracle OCP认证的技术定位怎么样?

一、引言&#xff1a;Oracle OCP认证的技术定位​ Oracle Certified Professional&#xff08;OCP&#xff09;认证是数据库领域含金量最高的国际认证之一&#xff0c;其核心价值在于培养具备企业级数据库全生命周期管理能力的专业人才。随着数字化转型加速&#xff0c;OCP认证…...

Redis 缓存穿透、缓存击穿、缓存雪崩详解与解决方案

在分布式系统中&#xff0c;Redis 凭借高性能和高并发处理能力&#xff0c;成为常用的缓存组件。然而&#xff0c;在实际应用中&#xff0c;缓存穿透、缓存击穿、缓存雪崩这三大问题会严重影响系统的性能与稳定性。本文将详细解析这三个问题的成因&#xff0c;并提供对应的解决…...

sass高阶应用

Sass(尤其是 SCSS 语法)除了基础功能外,还提供了许多高级特性,可以实现更灵活、可维护的样式系统。以下是 Sass 的 高级语法和应用技巧,适合中大型项目或组件库开发。 文章目录 一、控制指令(Control Directives)1. `@if / @else`2. `@for` 循环3. `@each` 遍历列表/Map…...

Telerik生态整合:Kendo UI for Angular组件在WinForms应用中的深度嵌入(一)

Telerik DevCraft包含一个完整的产品栈来构建您下一个Web、移动和桌面应用程序。它使用HTML和每个.NET平台的UI库&#xff0c;加快开发速度。Telerik DevCraft提供完整的工具箱&#xff0c;用于构建现代和面向未来的业务应用程序&#xff0c;目前提供UI for ASP.NET MVC、Kendo…...

【模拟电子电路-工具使用】

模拟电子电路-工具使用 ■ 1. 模拟软件■ 1. circuit JS ■ 2. 万用表■ 3. 示波器■ 4.■ 5.■ 6.■ 7. ■ 1. 模拟软件 ■ 1. circuit JS ■ 2. 万用表 ■ 3. 示波器 ■ 4. ■ 5. ■ 6. ■ 7....

UE5.5 pixelstreaming插件打包报错

文章目录 错误内容如下解决方案推流服务器不能使用 错误内容如下 The following files are set to be staged, but contain restricted folder names ("Linux"): CTZ5_5/Samples/PixelStreaming/WebServers/Extras/FrontendTests/dockerfiles/linux/Dockerfile CTZ5…...