Redis: 持久化

news2024/11/27 20:28:09

文章目录

  • 一、RDB持久化
    • 1、概念
    • 2、生成、载入RDB文件
    • 3、执行时机
      • (1) 执行save命令
      • (2)执行bgsave命令
      • (3)Redis停机时
      • (4)触发RDB条件
    • 4、bgsave原理
    • 5、小结
  • 二、AOF持久化
    • 1、概念
    • 2、AOF配置
    • 3、AOF文件重写
    • 4、RDB与AOF对比

一、RDB持久化

1、概念

RDB全称Redis Database Backup file(Redis数据备份文件),也被叫做Redis数据快照。简单来说就是把内存中的所有数据都记录到磁盘中。当Redis实例故障重启后,从磁盘读取快照文件,恢复数据。快照文件称为RDB文件,默认是保存在当前运行目录。

2、生成、载入RDB文件

  • 生成RDB文件:在执行save或bgsave命令时会生成一个新的RDB文件,在生成新的RDB文件时已过期的键不会保存到其中。
  • 载入RDB文件:如果服务器开启了RDB功能,那么服务器在启动时,会对RDB文件进行载入:
    • 主服务器模式:过期的键不会被载入到数据库中,数据载入的过程中会被忽略掉。
    • 从服务器模式: 文件中所有的数据都会载入到数据库中(不论键是否过期都会载入)。

3、执行时机

(1) 执行save命令

可以立即执行一次RDB:save命令会导致主进程执行RDB,这个过程中其它所有命令都会被阻塞。只有在数据迁移时可能用到。
在这里插入图片描述

(2)执行bgsave命令

可以异步执行RDB:这个命令执行后会开启独立进程完成RDB,主进程可以持续处理用户请求,不受影响。
在这里插入图片描述

(3)Redis停机时

Redis停机时会执行一次save命令,实现RDB持久化

(4)触发RDB条件

Redis内部有触发RDB的机制,可以在redis.conf文件中找到,格式如下:
在这里插入图片描述
RDB的其它配置也可以在redis.conf文件中设置:
在这里插入图片描述

4、bgsave原理

bgsave开始时会fork主进程得到子进程,子进程共享主进程的内存数据。完成fork后读取内存数据并写入 RDB 文件。fork采用的是copy-on-write技术

  • 当主进程执行读操作时,访问共享内存
  • 当主进程执行写操作时,则会拷贝一份数据,执行写操作
    在这里插入图片描述

5、小结

  • RDB方式bgsave的基本流程
    • fork主进程得到一个子进程,共享内存空间
    • 子进程读取内存数据并写入新的RDB文件
    • 用新RDB文件替换旧的RDB文件
  • RDB会在什么时候执行?save 60 1000代表什么含义
    • 默认是服务停止时
    • 代表60秒内至少执行1000次修改则触发RDB
  • RDB的缺点
    • RDB执行间隔时间长,两次RDB之间写入数据有丢失的风险
    • fork子进程、压缩、写出RDB文件都比较耗时

二、AOF持久化

1、概念

AOF全称为Append Only File(追加文件)。Redis处理的每一个写命令都会记录在AOF文件,可以看做是命令日志文件。
在这里插入图片描述

2、AOF配置

  • AOF默认是关闭的,需要修改redis.conf配置文件来开启AOF:
    在这里插入图片描述
  • AOF的命令记录的频率也可以通过redis.conf文件来配
    在这里插入图片描述
    • 三种策略对比
      在这里插入图片描述

3、AOF文件重写

因为是记录命令,AOF文件会比RDB文件大的多。而且AOF会记录对同一个key的多次写操作,但只有最后一次写操作才有意义。通过执行bgrewriteaof命令,可以让AOF文件执行重写功能,用最少的命令达到相同效果。

  • 如图,AOF原本有三个命令,但是set num 123 和 set num 666都是对num的操作,第二次会覆盖第一次的值,因此第一个命令记录下来没有意义。所以重写命令后,AOF文件内容就是:mset name jack num 666
    在这里插入图片描述
  • Redis也会在触发阈值时自动去重写AOF文件。阈值也可以在redis.conf中配置:
    在这里插入图片描述

4、RDB与AOF对比

RDB和AOF各有自己的优缺点,如果对数据安全性要求较高,在实际开发中往往会结合两者来使用。
在这里插入图片描述

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

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

相关文章

Linux学习-网络UDP

网络 数据传输,数据共享 网络协议模型 OSI协议模型 应用层 实际发送的数据 表示层 发送的数据是否加密 会话层 是否建立会话连接 传输层 数据传输的方式(数据报、流式&#…

C++STL(list类)

文章目录 1.list类的介绍2.list的基本用法2.1 基本用法2.2 迭代器失效2.3 reverse(逆置)2.3 sort(排序)2.4 unique(去重)2.5 splice(转移) 3.list的底层(模拟实现)3.1 list的3.2 修改链表问题3.3 完整代码 1.list类的介绍 list是可以在常数范围内在任意位置进行插入和删除的序列…

代码随想录阅读笔记-二叉树【将有序数组转换为二叉搜索树】

题目 将一个按照升序排列的有序数组,转换为一棵高度平衡二叉搜索树。 本题中,一个高度平衡二叉树是指一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 1。 示例: 思路 做这道题目之前大家可以了解一下之前讲到的一些问题 从中序和后序遍历…

红豆开箱上手必读

什么是红豆? 红豆开源平台是由奇迹物联发布并主导维护的 LTE Cat1 物联网产品开发平台,它是基于 Cat1 蜂窝通信模组 AM430E 构建的技术开源平台。该平台的目标是帮助物联网行业从业者利用搭乐高模块化模式进行 Open CPU 开发,它为开发者提供…

C++:类与对象(一)

hello,各位小伙伴,本篇文章跟大家一起学习《C:类与对象(一)》,感谢大家对我上一篇的支持,如有什么问题,还请多多指教 ! 文章目录 面向对象和面向过程的区别1.类的引入2.…

2024年MathorCup妈妈杯数学建模思路C题思路解析+参考成品

1 赛题思路 (赛题出来以后第一时间在群内分享,点击下方群名片即可加群) 2 比赛日期和时间 报名截止时间:2024年4月11日(周四)12:00 比赛开始时间:2024年4月12日(周五)8:00 比赛结束时间&…

Hello 算法9:图

https://www.hello-algo.com/chapter_graph/graph/#911 图的基本概念 图由顶点和边组成,比起链表(线性数据结构)和树(分治结构),图更自由也更复杂 方向性 在无向图中,边表示两个顶点之间的双…

苹果手机怎么查找对方手机位置?2招快速定位!

在现代社会中,智能手机已经成为我们生活中不可或缺的一部分。然而,随着手机的普及,我们也面临着一些问题,比如手机丢失或被盗。 在这种情况下,如何快速准确地找到手机的位置就显得尤为重要。苹果手机怎么查找对方手机…

PKI:构建数字安全基石的关键技术

在数字化时代,网络安全已成为我们日常生活和工作的重要组成部分。为了确保数据的完整性、机密性和身份的真实性,公钥基础设施(Public Key Infrastructure,简称PKI)技术应运而生,为构建数字安全基石提供了重…

面试算法-151-矩阵置零

题目 给定一个 m x n 的矩阵,如果一个元素为 0 ,则将其所在行和列的所有元素都设为 0 。请使用 原地 算法。 示例 1: 输入:matrix [[1,1,1],[1,0,1],[1,1,1]] 输出:[[1,0,1],[0,0,0],[1,0,1]] 解 class Solutio…

LangChain - 文档加载

文章目录 一、关于 检索二、文档加载器入门指南 三、CSV1、使用每个文档一行的 CSV 数据加载2、自定义 csv 解析和加载3、指定用于标识文档来源的列 四、文件目录 file_directory1、加载文件目录数据2、显示进度条 (tqdm3、使用多线程 use_multithreading4、更改加载…

通用开发技能系列:Scrum、Kanban等敏捷管理策略

云原生学习路线导航页(持续更新中) 本文是 通用开发技能系列 文章,主要对编程通用技能 Scrum、Kanban等敏捷管理策略 进行学习 1.什么是敏捷开发 敏捷是一个描述软件开发方法的术语,它强调增量交付、团队协作、持续规划和持续学习…

如何使用生成式人工智能撰写关于新产品发布的文章?

利用生成式人工智能撰写新产品发布文章确实是一种既有创意又高效的内容生成方式。以下是如何做到这一点的指南,附带一些背景信息: • 背景:在撰写文章之前,收集有关您的新产品的信息。这包括产品的名称、类别、特点、优势、目标受…

git 常用命令和使用方法

作者简介: 一个平凡而乐于分享的小比特,中南民族大学通信工程专业研究生在读,研究方向无线联邦学习 擅长领域:驱动开发,嵌入式软件开发,BSP开发 作者主页:一个平凡而乐于分享的小比特的个人主页…

DJ的打碟是什么意思 FL Studio怎么制作打碟的效果

在如今的音乐文化中,DJ打碟已经成为一种重要的表演形式和音乐创作方式。但是,对于许多人来说,仍然会对DJ的打碟到底意味着什么存在疑惑,接下来给大家介绍DJ的打碟是什么意思,FL Studio怎么制作打碟的效果的具体内容。 …

Pentaho Data Integration(kettle)下载

Kettle已然是改了名了,新名字叫Pentaho Data Integration 网上常见的下载地址已经失效,被提示找不到Date Integration目录: https://sourceforge.net/projects/pentaho/files/Data%20Integration/ 点击页面上的pdf,下载文件后打…

基于单片机16路多路抢答器仿真系统设计

**单片机设计介绍,基于单片机16路多路抢答器仿真系统设计 文章目录 一 概要二、功能设计三、 软件设计原理图 五、 程序六、 文章目录 一 概要 基于单片机16路多路抢答器仿真系统的设计概要主要涵盖硬件设计、软件编程以及功能实现等方面。以下是针对该设计的详细概…

ABAP 弹出输入框/弹出屏幕选择条件框

简单输入框 代码 DATA:TAB TYPE TABLE OF SVAL WITH HEADER LINE ,CODE TYPE C . TAB-TABNAME ZTAB_XX."表 TAB-FIELDNAME XXXX."字段 TAB-FIELDTEXT 条码扫描 ."说明 APPEND TAB. "弹出填写数据的框 CALL FUNCTION POPUP_GE…

mysql安装初始化(windows)

文章目录 一、下载二、 初始化数据库三、把mysql注册成服务 一、下载 https://downloads.mysql.com/archives/community/ 二、 初始化数据库 mysqld --initialize-insecure初始化完成后,可以开黑框运行数据库 mysqld --console三、把mysql注册成服务 mysqld -…

博士推荐 | 西安交通大学毕业的机械工程博士,EIT认证机械工程师

编辑 / 木子 审核 / 朝阳 伟骅英才 伟骅英才致力于以大数据、区块链、AI人工智能等前沿技术打造开放的人力资本生态,用科技解决职业领域问题,提升行业数字化服务水平,提供创新型的产业与人才一体化服务的人力资源解决方案和示范平台&#x…