2、Redis持久化、主从与哨兵:构建强大而稳定的数据生态

Redis作为一款高性能的内存数据库,其在持久化、主从复制和哨兵系统方面的支持使其在大规模应用和高可用性场景中脱颖而出。本文将深入探讨Redis的持久化机制、主从复制以及哨兵系统,为构建强大而稳定的数据生态揭示关键技术。

持久化:数据的保险箱

Redis的持久化机制旨在保障数据在内存中的安全。有两种主要的持久化方式:

  1. RDB(Redis DataBase)快照: 定期将内存中的数据以快照的形式保存到磁盘上。这种方式适用于数据较为稳定,且可以接受在定期时间点进行备份的场景。

    save :可在Redis配置文件配置   同步   会阻塞Redis其他命令     
    bgsave :写时复制机制(COW   copy on write)  异步  不会阻塞Redis其他命令
    Save 60 100   在60秒内执行了100条键值更新则备份一次进行数据持久化
  2. AOF(Append Only File)日志: 将每次写操作追加到文件中,以此来记录数据的变更。AOF的优势在于在系统异常宕机时,可以通过重放日志文件来恢复数据。

    将Redis没更新一条记录都记录进文件中,每隔一段时间同步到磁盘,可手动配置隔多久同步一次至磁盘

    Redis默认开启的是RDB,默认使用AOF恢复数据

    Redis4.0增加混合持久化,开启的前提是先开启AOF,AOF重写时(备份时)给指令压缩成二进制(RDB存储格式)写进文件中,当在备份时在执行的命令,以AOF存储的命令追加进文件中,只要持久化的文件存在就可以恢复Redis数据

    Redis数据备份策略:

    1. 写crontab定时调度脚本,每小时都copy一个rdb或aof的备份到目录中,仅仅保留近48小时的备份
    2. 每天都保留一份当日的备份数据到目录中,保留近一个月的备份
    3. 每次copy备份的时候都给旧的删除了
    4. 每天晚上将当前机器上的备份复制一份到其它机器上,防止机器损坏

主从复制:高可用性的支柱

主从复制是Redis实现高可用性的重要手段。在主从架构中,一个节点(主节点)负责写操作,而其他节点(从节点)复制主节点的数据。这带来了以下优势:

  1. 负载均衡: 主节点处理写请求,从节点处理读请求,有效分担了系统负载。
  2. 数据备份: 从节点作为主节点的镜像,即使主节点宕机,从节点仍然保留数据的副本。
     
    搭建多个redis,在从Redis的配置文件配置一个 replicaof host:port   如replicaof 127.0.0.1:6379   则当前Redis会主动去127.0.0.1:6379所在的Redis同步数据过来  
    Replica-read-only yes  配置从节点只读


    主从数据同步(全量)流程图

    主从数据同步(断点)流程图

     

    如果有很多从节点,为了缓解主节点的数据同步压力,可以适当调整从节点架构配置,调整部分从节点和从节点进行同步数据
    如果redis要整读写分离,则需要在代码上进行读写拦截然后取对应的主从库读写数据


    redis的管道:

    可以一次性给十条命令通过一次IO发送给Redis,让Redis批量执行,节省了9次的io操作,管道不是原子的


    redis的lua脚本:

    lua脚本具备原子性,替代Redis的事务,并且可以减少io开销
    lua脚本不要出现死循环和耗时的运算,否则Redis会阻塞不执行其他的命令,Redis是单线程 ,管道不会阻塞Redis

哨兵系统:自动化的守护者

哨兵系统是Redis用于监控和自动化处理节点故障的工具。哨兵系统可以实现:

  1. 故障检测: 监控主节点和从节点的健康状态,发现异常情况。
  2. 自动故障转移: 当主节点宕机时,哨兵系统可以自动选举一个从节点成为新的主节点,确保系统的持续可用性。

    redis哨兵高可用架构(sentinel)
    sentinel只负责监听,当主节点挂了, sentinel会重新选举出一个从节点为新的主节点,之前的主节点恢复后会变成从节点与新的主节点进行数据同步
    哨兵挂了,整个Redis都不可访问

构建强大而稳定的数据生态

将持久化、主从复制和哨兵系统结合使用,可以构建一个强大而稳定的Redis数据生态。持久化机制保障数据的持久性,主从复制提供了负载均衡和数据备份,而哨兵系统则自动处理节点故障,保障系统的高可用性。

在这个数据生态中,Redis不仅是一个高性能的内存数据库,更是一个可靠的数据存储和处理平台。通过深度集成这些特性,开发者可以放心地构建出应对各种挑战的应用系统,从而在数据的世界里走得更远。

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

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

相关文章

B端产品经理学习-版本规划管理

首先我们回顾一下用户故事,用户故事有如下特点: PRD文档的特点则如下: B端产品中用户角色不同,需求侧重也不同 决策人——公司战略需求:转型升级、降本增效、品牌提升等 管理负责人——公司管理需求:提升…

Kafka详解

KAFKA 1、消息队列(了解) 1-1 消息队列介绍 英文名:Message Queue,经常缩写为MQ。从字面上来理解,消息队列是用来存储传递消息的 1-2 消息队列应用场景 应用耦合-- 使用消息队列解耦 后端业务开发实名认证 图片上传功…

sectigo ip证书种类买一年送一月

Sectigo旗下的IP证书是专为只有公网IP地址的网站准备的。Sectigo旗下的数字证书大多是域名证书,例如,单域名SSL证书、多域名SSL证书、通配符SSL证书等。这些证书申请时必须验证域名所有权,申请者需要有一个拥有管理全的域名网站,那…

四、C语言中的数组:数组的创建与初始化

其实在之前的学习中我们已经或多或少接触到了数组,有关scanf()的安全用法中我们提到了如何避免数组溢出的问题,详情可以查看二、C语言数据类型与变量(scanf和printf (4)完) 这一章我们将详细学习数组在C语言中的应用 本章的学习…

MaxKey 单点登录认证系统——实现登录后自动跳转及分析思路

Maxkey单点登录系统集成业务系统应用之后,登录界面登录之后不会自动跳转业务系统,需要在首页点击相应应用之后,才能实现跳转业务系统,故以下本人提供解决方法和分析思路。 环境配置 本例使用的是CAS协议实现单点登录 Maxkey 服务…

优化 - 重构一次Mysql导致服务器的OOM

概述 优化了一次前后端处理不当导致的CPU的一次爆机行为,当然,这和服务器的配置低也有着密不可分的关系,简单的逻辑学告诉我们,要找到真正的问题,进行解决,CPU爆机的关键点在于前后端两个方面,…

POI-tl 知识整理:整理1 -> 利用模板向word中写入数据

1 文本传值 Testpublic void testText() throws Exception {XWPFTemplate template XWPFTemplate.compile("D:\\Idea-projects\\POI_word\\templates.docx");Map<String, Object> map new HashMap<>();map.put("title", "Hi, girl"…

如何在你的网站接入QQ登录?

文章目录 准备阶段申请QQ登录的权限创建应用最后上传qqlogin.php代码 准备阶段 国内服务器和备案域名需要你有张独一无二本人的身份证你正面手持身份证的图片一张100px*100px的网站图标 申请QQ登录的权限 首先访问qq互联&#xff0c;点击我直接访问 登陆完成后我们点击面的…

橘子学Spring01之spring的那些工厂和门面使用

一、Spring的工厂体系 我们先来说一下spring的工厂体系(也称之为容器)&#xff0c;得益于大佬们对于单一职责模式的坚决贯彻&#xff0c;在十几年以来spring的发展路上&#xff0c;扩展出来大量的工厂类&#xff0c;每一个工厂类都承担着自己的功能(其实就是有对应的方法实现)…

(三)CMake为什么几乎一统C++跨平台构建?

先看几个简单的例子再回头来看这个问题 回想一下当我们用windows写C第一个Hello World!的步骤&#xff0c;先用VS IDE 创建一个控制台的工程&#xff0c;IDE 会自动生成一个 cpp 文件&#xff0c;里面有一句 输出"Hello World!" 代码&#xff0c;这个时候按下F5 就可…

PTA 1117 数字之王 C++实现 简易代码

给定两个正整数 N1​<N2​。把从 N1​ 到 N2​ 的每个数的各位数的立方相乘&#xff0c;再将结果的各位数求和&#xff0c;得到一批新的数字&#xff0c;再对这批新的数字重复上述操作&#xff0c;直到所有数字都是 1 位数为止。这时哪个数字最多&#xff0c;哪个就是“数字…

在线直线度测量仪确保了出厂圆棒无不合格品

在线直线度测量仪确保了出厂圆棒无不合格品 随着生产设备的改进&#xff0c;利用基础材料进行生产的厂家对品质要求也越来越高&#xff0c;其中圆形棒管材的直线度尺寸&#xff0c;也是广受关注&#xff0c;对其进行矫直检测&#xff0c;使其出厂无不合格品。 变抽检为全检 以前…

逼格满满,推荐一个高效测试用例工具:XMind2TestCase !

一、背景 软件测试的核心是什么&#xff1f;毫无疑问是测试分析和测试用例设计&#xff0c;也是日常测试投入最多时间的工作内容之一。 然而&#xff0c;传统的测试用例设计过程有很多痛点&#xff1a; 1、使用Excel表格进行测试用例设计&#xff0c;虽然成本低&#xff0c;但…

Java 并发性和多线程3

七、线程安全及不可变性 当多个线程同时访问同一个资源&#xff0c;并且其中的一个或者多个线程对这个资源进行了写操作&#xff0c;才会产生竞态条件。多个线程同时读同一个资源不会产生竞态条件。 我们可以通过创建不可变的共享对象来保证对象在线程间共享时不会被修改&…

Github 2FA验证的解决方法

当前使用GitHub需要启用 2FA 验证&#xff0c;也就是除了账号密码外还有一个实时码&#xff0c;需要额外输入这个正确的实时码才能开启 2FA 验证和后续登陆。 浏览器插件 这是目前我在使用的方法。在浏览器中添加一个叫做Authenticator的插件&#xff0c;传送地址&#xff1a;…

MySQL 和 Redis 如何保证数据一致性,通过MySQL的binlog实现

1、简介 MySQL 和 Redis 如何保证数据一致性&#xff0c;目前大多讨论的是先更新Redis后更新MySQL&#xff0c;还是先更新MySQL 后更新Redis&#xff0c;这两种方式在实际的应用场景中都不能确保数据的完全一致性&#xff0c;在某些情况下会出现问题&#xff0c;本文介绍使用 C…

京东宣布启动鸿蒙原生应用开发,全力支持鸿蒙生态 | 百能云芯

华为常务董事、终端BG CEO、智能汽车解决方案BU董事长余承东于1月10日在微博上发布了一条令人振奋的消息&#xff1a;京东即将启动鸿蒙原生应用的开发。这一消息在科技圈掀起了不小的波澜&#xff0c;也为鸿蒙系统的发展注入了新的动力。 京东集团首席执行官兼执行董事许冉和余…

RPN(Region Proposal Networks)候选区域网络算法解析(附PyTorch代码)

0. 前言 按照国际惯例&#xff0c;首先声明&#xff1a;本文只是我自己学习的理解&#xff0c;虽然参考了他人的宝贵见解及成果&#xff0c;但是内容可能存在不准确的地方。如果发现文中错误&#xff0c;希望批评指正&#xff0c;共同进步。 本文基于论文Faster R-CNN: Towards…

大一统的监控探针采集器 cprobe

需求背景 监控数据采集领域&#xff0c;比如 Prometheus 生态有非常多的 Exporter&#xff0c;虽然生态繁荣&#xff0c;但是无法达到开箱即用的大一统体验&#xff0c;Exporter 体系的核心问题有&#xff1a; 良莠不齐&#xff1a;有的 Exporter 写的非常棒&#xff0c;有的…

uniapp怎么开发插件并发布

今天耳机坏了,暂时内卷不了,所以想开发几个插件玩玩,也好久没写博客了,就拿这个来写了 首先,发布插件时需要你有项目 这里先拿uniapp创建一个项目, 如下,创建好的项目长这样 然后根据uniapp官网上说的,我们发布插件时,需要在uni_modules里面编写和发布 ps:还需要使用uniapp…