基于内存的分布式NoSQL数据库Redis(五)数据存储与RDB设计

news2025/1/16 6:56:42

文章目录

    • 知识点18:数据存储设计
    • 知识点19:Redis持久化:RDB设计
    • 知识点20:Redis持久化:RDB测试
    • 后记

知识点18:数据存储设计

  • 目标掌握常见数据存储的设计

  • 实施

    • 问题
      • 数据存储如何保证数据安全?
      • HDFS的数据怎么保证安全性?
      • HDFS的元数据怎么保证安全性?
      • Spark的RDD数据怎么保证安全性?
    • 解决
      • 磁盘存储:数据存储在硬盘上
        • 特点:容量大、安全性高、读写速度上相对不如内存
        • 解决:副本备份
      • 内存存储:数据存储在内存中
        • 特点:容量小、安全性低、读写性能高
        • 解决:副本、持久化到磁盘
      • HDFS的数据怎么保证安全性?
        • 磁盘:副本机制
      • HDFS的元数据怎么保证安全性?
        • 磁盘:fsimage + edits
          • 副本机制:可以配置fsimage存储在多个目录中,每个目录存储一份
        • 内存:启动时加载到内存,在内存进行读写
          • edits:操作日志,NameNode会将内存中元数据的变化记录在edits文件中
      • Spark的RDD数据怎么保证安全性?
        • 方式一:血缘机制:每个RDD保存与父RDD之间的依赖关系
        • 方式二:persist/unpersist:缓存,将RDD缓存在内存或者磁盘中,缓存有副本机制
        • 方式三:checkpoint:检查点持久化,将RDD的数据持久在磁盘【HDFS】中
  • 小结

  • 掌握常见数据存储的设计

知识点19:Redis持久化:RDB设计

  • 目标:掌握Redis的RDB持久化机制

  • 路径

    • step1:问题
    • step2:RDB方案
    • step3:优缺点
  • 实施

    • 问题

      Redis中的数据都存储在内存中,由内存对外提供读写,Redis一旦重启,内存中的数据就会丢失,Redis如何实现持久化?
      
      • 写:set/hset/lpush/sadd/zadd
      • 写入内存直接返回
      • 读:get/hget/lrange/smembers/zrange
        • 直接读取内存
      • 每次Redis写入内存,将数据同步到磁盘
      • 如果重启,就将磁盘中的数据重新加载到磁盘,提供读取
    • RDB方案

      • Redis默认的持久化方案

      • 思想

        • 按照一定的时间内,如果Redis内存中的数据产生了一定次数的更新,就将整个Redis内存中的所有数据拍摄一个全量快照文件存储在硬盘上
        • 新的快照会覆盖老的快照文件,快照是全量快照,包含了内存中所有的内容,基本与内存一致
        • 如果Redis故障重启,从硬盘的快照文件进行恢复
      • 举例

        • 配置:save 30 2
        • 解释:如果30s内,redis内存中的数据发生了2条更新【插入、删除、修改】,就将整个Redis内存数据保存到磁盘文件中,作为快照
      • 过程

        image-20210521162946231

      • 触发

        • 手动触发:当执行某些命令时,会自动拍摄快照【一般不用】

          • save:手动触发拍摄RDB快照的,将内存的所有数据拍摄最新的快照
            • 前端运行
            • 阻塞所有的客户端请求,等待快照拍摄完成后,再继续处理客户端请求
            • 特点:快照与内存是一致的,数据不会丢失,用户的请求会被阻塞
          • bgsave:手动触发拍摄RDB快照的,将内存的所有数据拍摄最新的快照
            • 后台运行
            • 主进程会fork一个子进程负责拍摄快照,客户端可以正常请求,不会被阻塞
            • 特点:用户请求继续执行,用户的新增的更新数据不在快照中
          • shutdown:执行关闭服务端命令
          • flushall:清空,没有意义
        • 自动触发:按照一定的时间内发生的更新的次数,拍摄快照

          • 配置文件中有对应的配置,决定什么时候做快照

            #Redis可以设置多组rdb条件,默认设置了三组,这三组共同交叉作用,满足任何一个都会拍摄快照
            save 900 1
            save 300 10
            save 60 10000
            
            • 为什么默认设置3组?
    • 原因:如果只有一组策略,面向不同的写的场景,会导致数据丢失
      - 针对不同读写速度,设置不同策略,进行交叉保存快照,满足各种情况下数据的保存策略

    • 优缺点

      • 优点
        • rdb方式实现的是全量快照,快照文件中的数据与内存中的数据是一致的
        • 快照是二进制文件,生成快照加载快照都比较快,体积更小
        • Fork进程实现,性能更好
        • 总结:更快、更小、性能更好
      • 缺点
        • 存在一定概率导致部分数据丢失
    • 应用:希望有一个高性能的读写,不影响业务,允许一部分的数据存在一定概率的丢失**【做缓存】**,大规模的数据备份和恢复

  • 小结

    • 什么是RDB机制,优缺点分别是什么?

      • 思想:在一定时间内如果Redis发生一定次数的更新,就拍摄一个全量快照二进制文件存储在磁盘中
    • 如果重启,直接加载二进制文件恢复到内存

      • 触发
        • 手动:bgsave,shutdown
        • 自动:save 时间 次数
      • 特点
        • 优点:更小、更快、全量、性能更好
        • 缺点:存在一定概率数据丢失
      • 场景:大规模数据缓存或者数据备份和恢复

知识点20:Redis持久化:RDB测试

  • 目标实现RDB持久化的测试

  • 实施

    • 查看当前快照

      ll /export/server/redis/datas/
      

      image-20210522101037218

    • 配置修改

      cd /export/server/redis
      vim redis.conf
      #202行
      save 900 1
      save 300 10
      save 60 10000
      save 20 2
      
    • 重启redis服务,配置才会生效

      shutdown
      redis-start.sh
      
  • 插入数据

      set s1 "laoda"
      set s2 "laoliu"
      set s3 "laoliu"
    
  • 查看dump的rdb快照

      ll /export/server/redis/datas/
    

    image-20210522101331161

  • 小结

    • 实现RDB持久化的测试

后记

📢博客主页:https://manor.blog.csdn.net

📢欢迎点赞 👍 收藏 ⭐留言 📝 如有错误敬请指正!
📢本文由 Maynor 原创,首发于 CSDN博客🙉
📢不能老盯着手机屏幕,要不时地抬起头,看看老板的位置⭐
📢专栏持续更新,欢迎订阅:https://blog.csdn.net/xianyu120/category_12394313.html

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

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

相关文章

面试算法28:展平多级双向链表

问题 在一个多级双向链表中,节点除了有两个指针分别指向前后两个节点,还有一个指针指向它的子链表,并且子链表也是一个双向链表,它的节点也有指向子链表的指针。请将这样的多级双向链表展平成普通的双向链表,即所有节…

RocketMQ读写分离实战

这里是weihubeats,觉得文章不错可以关注公众号小奏技术,文章首发。拒绝营销号,拒绝标题党 背景 继上次分析RocketMQ线上各种system busy 比较合理能提升性能和缓解system busy的方法就是修改broker的配置为transientStorePoolEnable true 今天我们就…

慎投!包含Hindawi旗下2本,5本Scopus期刊被剔除!(附9月更新下载)

2023年9月Scopus期刊目录更新 Scopus官网近日更新了9月期刊目录,此次更新与上次(2023年8月)相比,有5本期刊不再被收录,详情如下: / Scopus期刊目录说明 / • SCOPUS 和 SCI 的相同点: 简单来说…

客户管理系统是如何提高工作效率的?

对于大部分企业来说销售部门相比市场营销等部门,会投入更大的人力、物力,客户管理系统在其中发挥着重要作用,它是如何提高工作效率的。 在数字化高度发达的今天,销售自动化已经步入了企业的经营管理中,大大地改善了销…

Spring Cloud Gateway集成Swagger实现微服务接口文档统一管理及登录访问

简介 本文将介绍如何在Spring Cloud微服务中使用Swagger网关来统一管理所有微服务的接口文档,并通过Spring Security实现登录后才能访问Swagger文档,以确保接口数据的安全访问。 在开始之前,需要假设你已经完成了Spring Cloud Gateway的相关…

触控笔哪个牌子好用?主动电容笔和被动电容笔的区别

主动式电容笔和被动式电容笔两者最大的不同之处在于主动式电容笔的应用范围更大,可以兼容各种不同的电容屏幕。随着人们对其认识的不断深入,其应用范围也在不断扩大。而且国产的主动式电容笔,也在不断的更新换代,重力越来越多&…

【工具】SecureCR-8.5下载、安装激活和使用教程

起初我参考的文章:【工具】SecureCR-8.5下载、安装激活和使用教程(包含常用设置)_securecrt激活_SecureCode的博客-CSDN博客 但是不行啊,执行到13步的时候报错: 问了作者也没有回应,直到我参考了&#xff…

动手实现H5仿原生app前进后退切换效果

动手实现H5仿原生app前进后退切换效果 前言 最近在优化H5页面&#xff0c;我注意到当开发完成的移动端H5页面嵌入到微信小程序或者原生app中时&#xff0c;当触发页面路由切换会与原生app看上去有点格格不入&#xff0c;因为H5页面<router-view>切换路由时是直接替换了…

vue3点击表格某个单元格文本就切换成输入框,其他单元格不变化

<el-table :data"data.tableData" height"60vh" border scrollbar-aways-on><el-table-column label"序号" type"index" width"80" fixed /><el-table-column label"操作" width"120" f…

Linux知识点 -- 高级IO(二)

Linux知识点 – 高级IO&#xff08;二&#xff09; 文章目录 Linux知识点 -- 高级IO&#xff08;二&#xff09;一、IO多路转接 -- poll1.poll接口2.poll实现3.poll优缺点 二、IO多路转接 -- epoll1.epoll接口2.epoll的工作原理3.epoll服务器实现4.epoll的优点5.epoll的工作模式…

在线加解密(支持SM2、SM3、SM4)

https://the-x.cn/zh-cn/cryptography/Sm4.aspx

SAS国际认证考试报名流程

文章目录 注册SAS账号登录SAS账号预约考试考试注意事项 注册SAS账号 SAS考试报名入口&#xff1a;https://home.pearsonvue.com/sas 注册SAS账号 邮箱验证 点击上述邮件发送来的链接&#xff0c;跳转到如下界面。输入密码即可。 完成注册。选择login。 登录SAS账号 输入Email …

MongoDB 未授权访问漏洞

简介 MongoDB是一个基于分布式文件存储的数据库&#xff0c;是一个介于关系数据库和非关系数据库之间的产品&#xff0c;它的特点是高性能、易部署、易使用&#xff0c;存储数据非常方便&#xff0c;默认情况下是没有认证的这就导致不熟悉它的研发人员部署后没有做访问控制导致…

NAND存储器转储分析 - 使用ECC修复位错误与UBI镜像固件分析

一、 简介 这篇研究论文将通过黑客的视角&#xff0c;详细阐述如何操作 NAND dump 以及如何获取 dump 文件中的所有文件。每一步骤以及所使用的方法均会细致解析&#xff0c;并配以实例说明。本文主要关注的是物理 NAND dump&#xff0c;这是从通用编程器中提取出的 dump 文件…

重磅!中科院1区TOP被踢?共7本被剔除!10月SCIE/SSCI期刊目录更新!

期刊动态&#xff1a;2023年10月SCI、SSCI期刊目录更新 2023年10月17日&#xff0c;科睿唯安更新了WOS期刊目录&#xff0c;继上次9月WOS期刊目录剔除7本SCIE&SSCI期刊之后&#xff0c;此次10月更新又有7本期刊发生变动&#xff0c;其中有5本SCIE期刊&#xff0c;1本SSCI期…

软键盘怎么打开?3招快速打开!

“我的键盘好像出现了一些问题&#xff0c;现在没法输入文字。听说电脑上有个工具叫软键盘&#xff0c;我想暂时先用这个来代替键盘。有什么方法可以把它打开的吗&#xff1f;” 软键盘是一个虚拟键盘&#xff0c;它不是物理键盘&#xff0c;而是出现在计算机屏幕上的可视化输入…

java的注解接口Target

java.lang.annotation.Target是Java中预定义的一个注解接口&#xff0c;用在注解接口的声明上&#xff0c;指明注解接口适用的上下文。 Target注解接口只有一个元素value&#xff0c;该元素的类型是java.lang.annotation.ElementType的数组&#xff0c;其中ElementType是一个枚…

vue使用pdf 导出当前页面,(jspdf, html2canvas )

需要安装两个插件 npm install html2canvas jspdfyarn add html2canvas jspdf<div class"app-container" id"pdfPage">我是内容 </div><el-button size"mini" click"onExportPdf">导出数据</el-button>onexp…

SAP MM物料移动取总账科目逻辑,debug 标准bapi BAPI_GOODSMVT_CREATE

debug 标准bapi BAPI_GOODSMVT_CREATE perform mb_create_goods_movement function MB_CREATE_GOODS_MOVEMENT function MB_CREATE_MATERIAL_DOCUMENT perform buchen_aufbereiten perform F-SEGMENTE_GENERIEREN perform f-segmente_erstellen perform f-segmente_erzeugen p…

C语言参悟-函数

C语言参悟-函数 一、概述二、函数1. 函数的构成2. 函数参数3. 函数名4. 函数返回值5. 函数的工作1. 程序栈2、栈帧的组织 三、函数递归四、函数指针 一、概述 首先&#xff0c;什么是函数&#xff1f;函数&#xff08;function&#xff09;是完成特定任务的独立程序代码单元。…