Redis高可用

news2025/3/1 6:32:49

最近离职后还没开始找工作,在找工作前去学习一下Redis高可用方案。

目录

  • Redis高可用
    • 高可用的概念
    • 实现方式
  • 持久化
  • 主从复制
    • 简单结构
    • 优化结构
    • 优缺点
  • 哨兵模式(Sentinel)
    • 哨兵进程的作用
    • 自动故障迁移(Automatic failover)
    • 优缺点
  • 集群
    • 优缺点

Redis高可用

高可用的概念

通过尽量缩短日常维护操作和突发的系统崩溃所导致的停机时间,以提高系统和应用的可用性。

实现方式

Redis高可用的实现方式有:

  1. 持久化
  2. 主从复制
  3. 哨兵
  4. Cluster集群

持久化

通过AOF和RDB实现持久化,服务器宕机后可以快速找回之前的数据,防止大量请求打入数据库,防止服务或系统宕机导致数据丢失。
具体看Redis入门(二)——持久化

主从复制

将一台Redis作为主节点(Master),将上面的数据复制到其他Redis,其他的Redis就是从节点(Slave)。

Master节点提供数据的事务性操作(增删改),Slave只提供读操作。

简单结构

将Slave都挂在Master节点上
在这里插入图片描述
优点

Slave节点与master节点的数据延迟较小

缺点

Slave节点较多时,Master同步一次数据较久

优化结构

为了提高Master同步数据的效率,只在Master下挂一个Slave节点,其他节点挂载到这个Slave节点上。
通过传递完成数据同步,减少Master性能消耗
在这里插入图片描述

优缺点

优点

  • 实现读写分离,降低Master的读数据压力,提高系统性能
  • 配置简单,容易搭建

缺点

  • Master宕机时,无法选择哪台Slave作为新的Master节点,保证不了高可用
  • 写压力都集中到Master节点上

哨兵模式(Sentinel)

基于主从复制,解决Master宕机时不知道选择哪台Slave作为新的Master节点。
对每个节点进行监控,Master宕机时通过投票机制选择新的Master节点,并将其他Slave节点连接到新的Master节点。

哨兵进程的作用

监控(Monitoring): 哨兵(sentinel) 会不断地检查你的Master和Slave是否运作正常。
提醒(Notification):当被监控的某个Redis节点出现问题时, 哨兵(sentinel) 可以通过 API 向管理员或者其他应用程序发送通知。

自动故障迁移(Automatic failover)

当一个Master不能正常工作时,哨兵(sentinel) 会开始一次自动故障迁移操作:

  • 将失效Master的其中一个Slave升级为新的Master, 并让失效Master的其他Slave改为复制新的Master;
  • Client试图连接失效的Master时,集群也会向客户端返回新Master的地址,使得集群可以使用现在的Master替换失效Master

优缺点

优点

  • 保证高可用

缺点

  • 中心化集群实现方式,基于主从模式,切换节点时,会发生数据的丢失。
  • 集群里所有节点保存的都是全量数据,浪费内存空间,没有真正实现分布式存储。数据量过大时,主从同步严重影响master的性能。
  • 数据写的操作都集中在master上,仍然没有解决master写数据的压力。

集群

哨兵实现了高可用,但是每个节点存储的都是相同的内容,浪费内存。同时也没有解决master写数据的压力。

集群模式,能自动将数据进行分片,实现分布式储存,每个节点存储不同的数据。

架构如下:
在这里插入图片描述

优缺点

优点

  • 无中心架构;
  • 数据按照 slot 存储分布在多个节点,节点间数据共享,可动态调整数据分布;
  • 可扩展性:可线性扩展到 1000 多个节点,节点可动态添加或删除;
  • 高可用性:部分节点不可用时,集群仍可用。通过增加 Slave 做 standby 数据副本,能够实现故障自动 failover,节点之间通过 gossip 协议交换状态信息,用投票机制完成 Slave 到 Master 的角色提升;
  • 降低运维成本,提高系统的扩展性和可用性。

缺点

  • 节点会因为某些原因发生阻塞(阻塞时间大于 cluster-node-timeout),被判断下线,这种failover是没有必要的
  • 数据通过异步复制,不能保证数据一致性
  • 多个业务使用同一个集群时,无法根据统计区分冷热数据,资源隔离性较差,容易出现相互影响的情况
  • 不支持多数据库空间,单机时可以选择16个数据库,集群只能选择一个数据库,即db0
  • key批量操作限制,如mget、mset,目前只支持相同slot值的key执行批量操作,不同的slot不支持跨slot查询

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

300左右买什么蓝牙耳机好?300元内音质最好的蓝牙耳机

在市场上有很多蓝牙耳机。当时无线蓝牙耳机如此流行也是由苹果公司提出。作为首次取消手机上3.5毫米耳机插孔的手机,后面许多手机也纷纷效仿。但这也促进了科学技术的发展。下面分享几款300元内音质表现不错的蓝牙耳机。 第一款:南卡小音舱Lite2蓝牙耳机…

【深度思考】人工智能技术对未来各行业的影响,我们该如何应对?

目录 1、AI的应用对行业带来的机遇 2、AI将冲击哪些行业 3、如何应对AI对个人发展的挑战 4、AI对于程序员的冲击 随着技术的不断发展,AI已经开始深刻影响着各行各业。从生产制造到金融、医疗和交通等行业,人工智能技术都在发挥着越来越重要的作用。现…

ijkplayer编译支持x264编码器

ijkplayer作为一款基于ffmpeg在移动端比较流行的播放器,并没有集成编码器。如果使用ffmpeg且需要音视频编码功能的话就需要自己手动集成。 编译支持x264编码器的流程主要参考了 ijkplayer支持x264编译 - 简书 原理与ijkplayer编译支持openssl的流程类似。 1 下载x…

项目管理 | 10年项目经理推荐的一份书单:你认真读过几本?

作为一名项目经理,我们需要在团队之间协调合作,管理预算和资源,确保项目按时、按预算顺利完成。因此,学习项目管理知识是提高我们的职业素养、职业技能和职业竞争力的关键。 今天就来给大家分享几本具有广泛影响力和权威性的项目…

如何动态的给一个类增加功能?

装饰器模式概述 装饰模式可以在不改变一个对象本身功能的基础上给对象增加额外的新行为,在现实生活中,这种情况也到处存在,例如一张照片,我们可以不改变照片本身,给它增加一个相框,使得它具有防潮的功能&a…

跨域问题?别担心!Spring Boot的5种奇巧淫技解救你

来源:https://blog.csdn.net/weter_drop/article/details/112135940 一、为什么会出现跨域问题 出于浏览器的同源策略限制。同源策略(Sameoriginpolicy)是一种约定,它是浏览器最核心也最基本的安全功能,如果缺少了同…

SpringBoot自定义注解+异步+观察者模式实现业务日志异步入库

SpringBoot自定义注解异步观察者模式实现业务日志异步入库前言基础环境导入依赖编写yml配置数据库设计代码实现实体类编写注解业务类型枚举编写切片ip工具类事件发布监听者Controller控制层servicemapper验证前言 我们在企业级的开发中,必不可少的是对日志的记录&a…

VSCode将markdown文件导出为带书签的PDF文件

背景 之前找工作的总结性文章,全是markdown形式的想直接变成PDF好携带。方便查找 初步探索遇到的问题 markdown直接在chrome钟打开,右键有打印选项,有一说一,效果不错,唯一缺点,没书签。 怎么办 查资料…

收音机知识,调谐(选频/滤波),调制(升频)

参考:https://www.bilibili.com/video/BV1d14y1N7nm/?spm_id_from333.999.0.0&vd_source00bd76f9d6dc090461cddd9f0deb2d51 有关知识提纲整个信号的传输变化调谐人耳听到声音的频率范围(20~20000Hz)天线和传送信号的波长关系波长和天线长…

LeetCode 剑指 Offer II 106. 二分图【二分图匹配】中等

本文属于「征服LeetCode」系列文章之一,这一系列正式开始于2021/08/12。由于LeetCode上部分题目有锁,本系列将至少持续到刷完所有无锁题之日为止;由于LeetCode还在不断地创建新题,本系列的终止日期可能是永远。在这一系列刷题文章…

京东pop店铺订单导出

下载安装与运行 下载、安装与运行 语雀 特别提醒 只能导出已登录店铺的订单导出的收件人手机号是虚拟号 功能 主要是方便线下工厂发货的店主 所见即所得的导出自由选择导出项自由排序Excel导出列顺序导出过程中有进度提示,用户可以随时提前中止 什么是所见即所…

Linux网络编程概述

文章目录 前言一、客户端与服务端二、客户端程序编写三、程序的编译和运行总结前言 本篇文章将带大家来正式学习Linux网络编程。 一、客户端与服务端 一般认为服务器是一个长时间运行的程序(既守护程序)他只在相应来自网络请求时才发送网络消息 协议的另一端是客户端程序,…

Swagger文档注释

本文以DRF框架为例使用 为什么要接口文档注释 一. 方便后端调试与后续接口更新; 二. 对于大型前后端分离项目,前后端人员是分开开发的,甚至前端的人你都不知道远在何处,这时候接口文档的重要性就太重要了。 三. 接口注释文档常用…

巧用千寻位置GNSS软件| 点放样操作指南

在工程测量中,点放样就是将设计或图纸上的点位在实地上测量出来,将目标坐标输入软件在实地放样出来的过程。本文将围绕“如何在千寻位置GNSS软件上完成点放样操作”进行分步骤讲解。点击【测量】->【点放样】->【坐标点库】,选择一个点…

气传导和骨传导耳机的区别?这两种耳机哪个更好更实用?

气传导和骨传导耳机的最大区别:就在于发声原理的不同。 这两种耳机,一种是空气传播声音,一种是骨骼固体传声。 气传导耳机,就是声音从外部传过来,并由外耳、中耳传导到内耳,这是我们日常中接触最多的传导…

第三方支付接口测试面试要点

第三方支付接口测试面试要点 第三方支付接口测试,主要是看你的接口功能实现的是否满足需求,以及你的测试思路是否正确。因此,接口测试工程师要从以下几个方面来准备。 首先,我们需要了解第三方支付的流程; 最后,我们需…

Spring 之 AOP 原理详解

Spring 是一个流行的 Java 企业应用程序开发框架。其中的 AOP(面向切面编程)是 Spring 框架中的一个核心概念。本文将介绍 Spring AOP 的底层实现原理,并通过源代码解析来详细阐述其实现过程。 什么是AOP? AOP是一种编程范式&…

three.js之自定义一个正方体(网格)

本节主要通过自定义顶点和平面的方式,创造一个立方体。真正的开始走近three.js。 效果图 坐标系 坐标系支持右手定则。图中红色是x轴,绿色是y轴,蓝色是z轴 源码 引入的插件js【本人的csdn也有下载资源,如果打不开git可以在csd…

AI网站汇总(免费chatgpt)(60个持续增加中)

本文总结了6大类AI工具,包括:聊天AI、绘画AI、AI提示词、图像处理、UI设计和3D设计,汇总60个AI网站,一键收藏。 目录 一、聊天AI 二、绘画AI 三、AI提示词 四、图像处理

SQL笔记(2)——MySQL的表操作与索引(收藏吃灰版)

本文详细记录如何通过命令的方式修改MySQL的表结构,例如新增列、删除列等;不止学会了,你还学懂了,收藏吃灰~ 开始之前 上一篇文章创建了一些表,ER图如下。本文针对score表进行操作,场景就是新增一个备注rem…