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,一经查实,立即删除!

相关文章

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

目录 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/ 使用虚拟头结点,这样会方便很…

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…

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

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

Git与VScode联合使用详解

目录 Git与VScode联合使用 方式一 1. 用vscode打开文件夹,如图点击初始化仓库,把此仓库初始为git仓库。 2. 提交文件到本地仓库 3. vscode与github账号绑定 4. 在github中建立远程仓库 5. 本地仓库与远程仓库绑定 方式二 1. 在github上建立远程仓…

VSCode添加Python解释器并安装Python库

目录 一、安装VSCode 二、安装Python解释器 1、安装包链接 2、安装过程 3、测试 4、安装flake8和yapf两个包 (1)安装flake8包 (2)安装yapf包 三、VSCode中选择python解释器 一、安装VSCode VSCode安装教程(默…

Windows之任意文件删除到提权

前言 ZDI 发表过从任意文件夹删除到提权的利用过程,还提供了任意文件删除到提权的利用过程,所以一字之差但是漏洞利用方式也是有细微偏差的。 这里把任意文件删除和任意文件夹删除漏洞提权结合起来分析,是因为其最后的利用过程是一样的&…

认识监控系统zabbix

利用一个优秀的监控软件,我们可以: ●通过一个友好的界面进行浏览整个网站所有的服务器状态 ●可以在 Web 前端方便的查看监控数据 ●可以回溯寻找事故发生时系统的问题和报警情况 了解zabbix zabbix是什么? ●zabbix 是一个基于 Web 界面的提供分布…