玩转redis(二)——redis持久化

news2024/11/15 17:50:35

文章目录

  • 前言
  • 一、RDB
    • 1.save 和 bgsave对比
    • 2.RDB的优点和缺点
      • 2.1 优点
      • 2.2 缺点
  • 二、AOF
    • 1.AOF重写
    • 2.AOF的优点和缺点
      • 2.1 优点
      • 2.2 缺点
    • 3 RDB和AOF对比
  • 三、AOF+RDB混合持久化
    • 1 原理
    • 2 如图
    • Redis数据备份策略(其实就是去备份我们的rdb/aof两个文件):
  • 四、部署架构
    • 1、主从架构
    • 2、哨兵架构
  • 总结


前言

Redis虽然是一种内存型数据库,一旦服务器进程退出,数据库的数据就会丢失,为了解决这个问题Redis提供了两种持久化的方案,将内存中的数据保存到磁盘中,避免数据的丢失。

我们一共提供了以下几种方式进行持久化:

  1. RDB
  2. AOF
  3. RDB+AOF混合持久化

一、RDB

RDB:以快照的形式,将redis中的数据保存成一个经过压缩二进制文件。它可以手动执行(save/bgsave命令),也可以再redis.conf中配置(save 60 1000行),定期执行。

1.save 和 bgsave对比

了解即可(只要记住,bgsave不阻塞,save阻塞命令。我们多用bgsave即可)
在这里插入图片描述

2.RDB的优点和缺点

2.1 优点

  1. 占用的内存空间比较小=》因为是压缩过的二进制文件
  2. 恢复的快=》二进制文件

2.2 缺点

  1. 数据安全性低=》快照是有周期的,并且我们不能频繁的快照效率低。因此我们容易丢数据

二、AOF

AOF 持久化,将修改的每一条指令记录进文件appendonly.aof中(先写入os cache,每隔一段时间
fsync到磁盘)。在AOF持久化的文件中,数据库会记录下所有变更数据库状态的命令(记录每一条修改redis数据的相关指令),除了指定数据库的select命令,其他的命令都是来自client的,这些命令会以追加(append)的形式保存到文件中。

1.AOF重写

  1. AOF文件里可能有太多没用指令,所以AOF会定期根据内存的最新数据生成aof文件
  2. 如上面的介绍,就是当我们执行一些语句时,进行AOF重写时,会判断这些语句能不能合并,能的话就合并。避免浪费空间,并且提高恢复的速度。

2.AOF的优点和缺点

2.1 优点

  1. 数据安全性高,每条指令都会写到aof中

2.2 缺点

  1. 文件大=》指令太多
  2. 恢复慢=》指令多

3 RDB和AOF对比

在这里插入图片描述

三、AOF+RDB混合持久化

我们为了结合两个持久化的优点(AOF数据安全性高和RDB小并且快的优点)。redis4.0之后引入了混合持久化的方式

1 原理

  • 首先我们要开启AOF,这种混合持久化,主要还是基于AOF的。
  • 然后就是AOF重写的时候,将我们的写再aof文件中的指令,进行一次RDB快照的方式,将之前的在aof文件中的指令以二进制压缩的方式存在aof中
  • 再者就是新进来的指令,依然是以指令的方式保存在aof文件中。等待下一次AOF重写才会再一次进行RDB快照。以此类推

2 如图

在这里插入图片描述

Redis数据备份策略(其实就是去备份我们的rdb/aof两个文件):

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

四、部署架构

1、主从架构

其实这都比较简单,相信做技术的各位大佬一看就懂了。搞几张大佬的图片看一下

在这里插入图片描述

  • 内部原理如下
  1. 全量复制(用于第一次从节点连接上主节点的时候)
    在这里插入图片描述
  2. 部分复制(用于使用期间从节点挂掉一小段时间)=》这里最重要的就是会有一个缓存区,这里不会放太多的数据,所以挂太久还是会使用全量复制
    在这里插入图片描述

注:当我们使用一主多从的时候,可能会造成复制风暴【复制风暴就是:主节点向多个从节点写数据的情况】那这个时候我就引入了如下结构
在这里插入图片描述

2、哨兵架构

哨兵架构,是为了防止我们的主节点或者其他节点挂掉的时候,我们能监听到。

在这里插入图片描述
tinel哨兵是特殊的redis服务,不提供读写服务,主要用来监控redis实例节点。
哨兵架构下client端第一次从哨兵找出redis的主节点,后续就直接访问redis的主节点,不会每次都通过
sentinel代理访问redis的主节点,当redis的主节点发生变化,哨兵会第一时间感知到,并且将新的redis
主节点通知给client端(这里面redis的client端一般都实现了订阅功能,订阅sentinel发布的节点变动消息)
重新推崇一个主节点的形式


总结

  • 这一节的总结,其实大部分都是理论的东西,建议搞一个虚拟机来实战一下。纸上得来终觉浅 绝知此事要躬行

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

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

相关文章

LeetCode刷题复盘笔记—一文搞懂完全背包之139. 单词拆分问题(动态规划系列第十六篇)

今日主要总结一下动态规划完全背包的一道题目,139. 单词拆分 题目:139. 单词拆分 Leetcode题目地址 题目描述: 给你一个字符串 s 和一个字符串列表 wordDict 作为字典。请你判断是否可以利用字典中出现的单词拼接出 s 。 注意:…

(附源码)SSM失物招领平台 毕业设计 271621

SSM失物招领平台的设计与实现 摘 要 信息化社会内需要与之针对性的信息获取途径,但是途径的扩展基本上为人们所努力的方向,由于站在的角度存在偏差,人们经常能够获得不同类型信息,这也是技术最为难以攻克的课题。针对失物招领等问…

红队隧道应用篇之MsfPortfwd端口转发(三)

简介 Meterpreter shell中的portfwd命令最常用作透视技术,允许直接访问攻击系统无法访问的机器, 例如不出网的内网主机, 前提是你要有一个此内网网段的能出网的主机的Meterpreter shell 命令参数 add: 增加端口转发 delete: 删除指定的端口转发 list: 查看端口转…

Spring Cloud Alibaba Nacos 安装

1.Nacos 官网下载地址 Releases alibaba/nacos GitHub 2.使用 rz 命令上传到 虚拟机上 3.解压 tar -zxvf nacos-server-2.1.2.tar.gz 注:解压后,可以直接启动,访问地址:http://192.168.10.121:8848/nacos/ 用户名:nacos 密码:n…

JavaEE进阶:Bean 作⽤域和⽣命周期

文章目录一、Bean 的作用域问题1、案例2、分析二、作用域定义1、Bean 的 6 种作用域① singleton② prototype③ request④ session⑤ application⑥ websocket⑦ 单例作用域(singleton)和全局作用域(application)区别2、设置作用域3、案例修改三、Bean 原理分析1、Bean 执行流…

学生花卉网网页设计作品 学生鲜花网页模板 简单在线花店主页成品 鲜花网页制作 HTML学生花店商城网站作业设计

🎉精彩专栏推荐 💭文末获取联系 ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 💂 作者主页: 【主页——🚀获取更多优质源码】 🎓 web前端期末大作业: 【📚毕设项目精品实战案例 (10…

vue3 创建项目、安装依赖、启动项目

1. 搭建vue开发环境 下载安装最新版node.js https://blog.csdn.net/weixin_41192489/article/details/117979077 2. 执行项目创建命令 打开命令行工具 cnpm init vuelatest无 cnpm 的朋友先执行 npm i cnpm 遇到这种提示时,输入 y 回车 3. 选择项目创建配置 参考下…

安卓玩机搞机技巧综合资源-----关闭miui广告 怎么省电 替换开机动画 LOGO 锁屏 壁纸等等【五】

接上篇 安卓玩机搞机技巧综合资源------如何提取手机分区 小米机型代码分享等等 【一】 安卓玩机搞机技巧综合资源------开机英文提示解决dm-verity corruption your device is corrupt. 设备内部报错 AB分区等等【二】 安卓玩机搞机技巧综合资源------EROFS分区格式 小米红…

Windows OpenGL ES 图像白平衡色温

目录 一.OpenGL ES 图像白平衡色温 1.原始图片2.效果演示 二.OpenGL ES 图像白平衡色温源码下载三.猜你喜欢 零基础 OpenGL ES 学习路线推荐 : OpenGL ES 学习目录 >> OpenGL ES 基础 零基础 OpenGL ES 学习路线推荐 : OpenGL ES 学习目录 >> OpenGL ES 特效 零…

Sentinel规则持久化

Sentinel规则持久化 根据之前遇到的问题可以看出,当服务关闭后Sentinel就不会再有对应的信息,也就是临时保存的,下面就是要进行持久化的保存 将限流配置规则持久化进Nacos保存,只要刷新8401某个rest地址,sentinel控制台…

解决安装 CentOS 8 错误: Error setting up base repository

1. 问题 安装 CentOS-8 常常会遇到这样的问题,即在安装过程中会发现软件源的设置,无论怎样都会显示这样的错误 “Error setting up base repository”。 导致这一问题的原因是,由于 CentOS-8 的生命周期较短,其基本的软件库已早…

数字化成汽车零部件发展趋势,数商云SRM系统库存管理模块助力企业转型升级

近年来,随着人工智能、物联网等技术应用边界不断拓展,数字化转型逐渐成为企业发展的趋势。零部件是汽车产业发展最为重要的基础,汽车零部件制造作为突破的重点领域之一,引领汽车零部件行业发展可加快提升汽车产业核心竞争力&#…

2022-03-18-SpringBoot

layout: post #标题配置 title: SpringBoot #时间配置 date: 2022-03-18 18:54:00 0800 #目录配置 categories: 框架 #标签配置 tag: 学习笔记 content {:toc} 一.SpringBoot基础 1-今日内容 Spring概述、快速入门SpringBoot配置SpringBoot整合 2-SpringBoot概述 SpringB…

【Cycle-Interactive GAN:弱光图像增强】

Cycle-Interactive Generative Adversarial Network for Robust Unsupervised Low-Light Enhancement (基于循环交互式生成式对抗网络的鲁棒无监督弱光增强) 近年来的无监督弱光增强方法摆脱了对成对训练数据拟合的基本限制,在调节图像亮度…

今年大促季,阿里云容器服务有哪些技术和应用新突破?

联合作者:志敏,冬岛,戒空,邓隽,佳旭,谢乘胜,元毅,溪洋在 2022 年的双 11 大促季中,阿里云容器服务(简称 ACK)、容器镜像服务(简称 ACR…

教你如何基于Redis来实现高性能延时消息队列!

最近在倒腾自建博客后端系统,需要用到延时任务的功能,但手头只有一套MySQL和Redis,如果搞一套MQ成本有点大,于是想着用redis实现延时消息队列。有些场景用数据库的定时扫表也能简单实现延时消息的功能,不过对于我这边的…

Frida-Dexdump 脱壳工具下载使用以及相关技术介绍

Frida-Dexdump 脱壳工具下载使用以及相关技术介绍 文章目录Frida-Dexdump 脱壳工具下载使用以及相关技术介绍前言一、查壳、反编译、APK工具推荐二、查壳1.方式12.方式二三、脱壳1.启动frida服务2.方式一3.方式二四、反编译总结前言 本案例使用的App是:引力播.apk&…

多无人机空中机器人施工任务分配(Matlab代码实现)

目录 💥1 概述 📚2 运行结果 🎉3 参考文献 👨‍💻4 Matlab代码 💥1 概述 空中机器人作为近年来新兴的热点得到了广泛的关注。小型空中机器人在没有外界卫星定位信号的前提下的导航是空中机器人的研究内…

cmip6数据处理、动力降尺度、统计降尺度、制备CMIP6的WRF驱动数据

收录了CMIP6数据处理方法,典型案例分析实践过程中出现的一些问题,及技术(下拉查看) 国际耦合模式比较计划进入新的阶段——第六阶段(CMIP6),这将为气候变化研究领域提供更丰富的全球气候模式数…

Python字符串格式化的三种方式

Python格式化的三种方式 根据类型定义的格式化 - %s 字符串格式化使用操作符 % 来实现, 示例 my name is %s,my age is %s % (neo, 18) 格式符: %s 连接符:格式化字符串与格式符变量之间用一个 % 连接, % 两边各有一个空格 附:…