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

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

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

相关文章

http状态码对照表

状态码含义100客户端应当继续发送请求。这个临时响应是用来通知客户端它的部分请求已经被服务器接收,且仍未被拒绝。客户端应当继续发送请求的剩余部分,或者如果请求已经完成,忽略这个响应。服务器必须在请求完成后向客户端发送一个最终响应。…

开发React应用的多语言支持最佳实践

前言 VoerkaI18n是一款非常优秀的全新的开源国际化多语言解决方案,主要特性包括: 全面工程化解决方案,提供初始化、提取文本、自动翻译、编译等工具链支持。符合直觉,不需要手动定义文本Key映射。强大的插值变量格式化器机制&am…

二进制与十六进制,二进制与八进制之间的相互转换技巧

目录 1.二进制转换为八进制 2.八进制转换为二进制 3.二进制转换为十六进制 4.十六进制转换为二进制 1.二进制转换为八进制 转换为8进制 第一步:以小数点为分界线,整数部分自右向左,小数部分自左向右每3位取成1位: 整数部分…

【python入门】day28:记录用户登录日志

演示 代码 #-*- coding:utf-8 -*- print(记录用户登录日志----------------------------) import time def show_info():print(输入提示数字,执行相应操作:0退出,1查看登录日志) def write_logininfo(username):#----------记录日志with open(log.txt,a,encodingutf-8)as file…

如何高效阅读Linux的man page

有时候需要在man page中查某个命令的用法,我们一般会使用man command的方式来查询,例如man vmstat.但是对于一些bash内置的命令,如alias,如果使用man alias会打开General Commands Manual ,如下图 可以看到,内置命令很多&#xff…

COBOL语言 :一种主要专注于解决业务问题的编程语言

译文: 什么是COBOL? COBOL是一种主要专注于解决业务问题的编程语言。COBOL的完整形式是面向业务的通用语言。它主要用于公司和政府的商业、金融和行政系统。这种语言也被用来解决许多数据处理问题。 它是由CODASYL(数据系统语言会议)开发的。它被用作大型机中的一…

基于 InternLM 和 LangChain 搭建你的知识库

如何打造垂域大模型是一个重要落地方向。 如何打造个人专属的大模型应用也是重要的问题。 RAG 外挂一个知识库 优势:成本低,实时更新 劣势:能力受基座模型影响大,RAG每次需要将检索文档和问题提交给大模型,极大占用上下…

工程项目管理系统源码与Spring Cloud:实现高效系统管理与二次开发

随着企业规模的不断扩大和业务的快速发展,传统的工程项目管理方式已经无法满足现代企业的需求。为了提高工程管理效率、减轻劳动强度、提高信息处理速度和准确性,企业需要借助先进的数字化技术进行转型。本文将介绍一款采用Spring CloudSpring BootMybat…

C++力扣题目701--二叉搜索树中的插入操作

给定二叉搜索树(BST)的根节点 root 和要插入树中的值 value ,将值插入二叉搜索树。 返回插入后二叉搜索树的根节点。 输入数据 保证 ,新值和原始二叉搜索树中的任意节点值都不同。 注意,可能存在多种有效的插入方式&a…

苏州倍丰智能新型雾化粉末技术量产成功!金属3D打印全产业链更进一步

苏州倍丰智能深耕金属3D打印技术领域,以金属3D打印全产业链为目标,围绕金属3D打印设备,涵盖包括金属粉末前后处理设备、金属粉末原材料制备、先进工艺研发等多个领域,完成了一整条自上而下的金属3D打印全产业链。 近日&#xff0c…

大数据Doris(五十四):SQL函数之日期函数(二)

文章目录 SQL函数之日期函数(二) 一、DAYOFMONTH(DATETIME date) 二、dayofweek(DATETIME date)

HarmonyOS 通过 animateTo讲解尺寸动画效果

上文 HarmonyOS讲解并演示 animateTo 动画效果 我们已经做出了基本的动画效果 也对 animateTo 的使用比较熟悉了 第一个参数是 配置动画参数的json 第二个参数 则是改变我们元素属性值的事件 但属性值 远远不止位置属性 本文 我们来说 通过尺寸变化 完成动画效果 如果你有看过…

代码随想录算法训练营第4天 | 24. 两两交换链表中的节点 , 19.删除链表的倒数第N个节点 , 面试题 02.07. 链表相交 , 142.环形链表II

链表知识基础 文章链接:https://programmercarl.com/%E9%93%BE%E8%A1%A8%E7%90%86%E8%AE%BA%E5%9F%BA%E7%A1%80.html# 24. 两两交换链表中的节点 题目链接:https://leetcode.cn/problems/swap-nodes-in-pairs/ 使用虚拟头结点,这样会方便很…

Promise和箭头函数和普通函数的区别

\1. Promise 的理解 Promise 是一种为了避免回调地狱的异步解决方案 2. Promise 是一种状态机: pending(进行中)、fulfilled(已成功)和rejected(已失败) 只有异步操作的结果,可以决…

Centos7编译Python3.11源码并安装完成的详细教程

Python3.11的Linux源码: Index of /ftp/python/https://www.python.org/ftp/python/由于Centos7里自带的openssl是1.0版本的,而Centos Stream8和9用的是openssl-1.1.1版本的。 注意:openssl必须是openssl-1.1.1版本的,虽然最高版…

QT的事件机制

QT的事件机制 文章目录 QT的事件机制 1、QT的事件机制。2、QT事件的整体流程。1、事件处理函数。1、鼠标按下与鼠标释放事件。2、事件的接收与忽略(accept()和ignore()函数)。 2.事件的分发enevt()1、事件分发的dome。2、enevt事件的缺点。 3、事件的过滤器。 3、总…

通过本质看现象:关于Integer受内部初始化赋值范围限制而出现的有趣现象

文/朱季谦 这是我很多年前的第一篇技术博客,当时作为一名技术小菜鸟,总体而言显得很拙见,但也算是成长路上的一个小脚印,希望能在以后的日子里,可以对JAVA技术有一个更加深入的思考与认识。 前几天我在逛论坛的时候&a…

SSM基础入门

SSM Mybatis、Spring和SpringMVC这三个框架整合在一起完成业务功能开发 文章目录 SSM5.1 流程5.2 详细步骤5.2.1 基本配置5.2.2 功能模块开发5.2.3 测试5.2.3.1 单元测试5.2.3.2 PostMan测试 5.3 统一结果封装5.3.1 概念5.3.2 实现 5.4 统一异常处理5.4.1 异常处理器的使用5.4…

自学习算法

自学习算法是一种基于深度学习的技术,通过大量的数据和模型训练,不断优化和改进模型的表现。 具体来说,自学习算法包括以下几个方面: 1.数据预处理:在训练模型之前,需要对大量的数据进行清洗、去重、标注…

Linux Centos7静默安装(非图形安装)Oracle RAC 11gR2(Oracle RAC 11.2.0.4)

Oracle RAC (全称Oracle Real Application Clusters )静默安装(非图形安装)教程。 由于这篇文章花费了我太多时间,设置了仅粉丝可见,见谅。 环境说明: 虚拟机软件:VMware Workstation 16 Pro…