Redis: 持久化

文章目录

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

一、RDB持久化

1、概念

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

2、执行时机

(1) 执行save命令

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

(2)执行bgsave命令

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

(3)Redis停机时

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

(4)触发RDB条件

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

3、原理

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

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

4、小结

  • 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各有自己的优缺点,如果对数据安全性要求较高,在实际开发中往往会结合两者来使用。
在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

中文地址分词器源码阅读(jiedi)

文章目录 structure.p文件pd.read_excelenumerate思维导图核心源码讲解jiedi.pytrain.py 总结 structure 点击左边的Structure按钮就如Structure界面。从Structure我们可以看出当前代码文件中有多少个全局变量、函数、类以及类中有多少个成员变量和成员函数。 其中V图标表示全…

HFSS仿真环形耦合器学习笔记

HFSS仿真环形耦合器学习笔记 文章目录 HFSS仿真环形耦合器学习笔记1、 理论基础2、 设计分析3、 仿真验证1、 求解器设置2、 建模3、 激励方式设置4、 边界条件设置5、 扫频设置6、 设计检查,仿真分析7、 数据后处理 1、 理论基础 环形定向耦合器的结构示意图如图所…

三分钟带你了解,可重构柔性装配生产线

产品个性化时代,产品小批量、多批次,行业常用高柔性的人-机混合装配线实现跨品类产品装配,但产品的装配质量一致性差、效率低成为行业痛点。富唯智能联合清华大学提出了可重构柔性装配方法和技术,实现跨品类产品的数控自动化装配。…

Spring 源码学习笔记(一)之搭建源码环境

前言 一直以来对 Spring 源码的理解不够全面,也不成条理,只是对其中的某小部分比较了解,所以从今天开始要重新系统学习 Spring 的源码了。 搭建源码环境 首先需要说明的是,源码环境并不是必须的,搭建源码环境唯一的好…

代码随想录算法训练营第四十六天 |139. 单词拆分 、卡码网56. 携带矿石资源

代码随想录算法训练营第四十六天 |139. 单词拆分 、卡码网56. 携带矿石资源 139. 单词拆分题目解法 卡码网56. 携带矿石资源题目解法 背包总结感悟 139. 单词拆分 题目 解法 题解链接 1. class Solution { public:bool wordBreak(string s, vector<string>& wordD…

JUC_1

进程 概述 进程&#xff1a;程序是静止的&#xff0c;进程实体的运行过程就是进程&#xff0c;是系统进行资源分配的基本单位 进程的特征&#xff1a;并发性、异步性、动态性、独立性、结构性 线程&#xff1a;线程是属于进程的&#xff0c;是一个基本的 CPU 执行单元&#x…

主机名控制者:DNS服务器

文章目录 什么是DNS用网络主机名取得IP的历史渊源DNS的主机名对应IP的查询流程合法DNS的关键&#xff0c;申请区域查询授权DNS数据库的记录&#xff1a;正解、反解、Zone的意义DNS数据库的类型&#xff1a;hint、Master/Slave架构 Client端的设置相关配置文件DNS的正、反解查询…

deepin 社区月报 | 2024年3月,多款应用重磅上新

内容来源&#xff1a;deepin 社区 deepin&#xff08;深度&#xff09;社区3月总览 2024年3月&#xff0c;有968位小伙伴加入了deepin&#xff08;深度&#xff09;社区大家庭&#xff0c;目前共有论坛伙伴152,779位&#xff1b; 在3月&#xff0c;deepin V23 Beta3共进行了5…

python 04字典映射

1.创建字典 &#xff08;1&#xff09;通过自己的输入创建字典 字典用大括号&#xff0c;至此&#xff0c;小括号( )表示元组&#xff0c;中括号[ ]表示列表&#xff0c;大括号{ }表示字典&#xff0c;python中最常用的三种数据结构就全了 &#xff08;2&#xff09;通过其他…

【C++进阶】哈希思想之哈希表和哈希桶模拟实现unordered_map和unordered_set

哈希表和哈希桶 一&#xff0c;什么是哈希二&#xff0c;关联式容器unordered_map/set1. unordered_map2. unordered_set 三&#xff0c;哈希的结构1. 哈希函数2. 哈希冲突 四&#xff0c;哈希表&#xff08;闭散列&#xff09;及其模拟实现五&#xff0c;哈希桶&#xff08;开…

练手项目层高阶3—《详解文件版本——通讯录管理系统》

文章目录 &#x1f6a9;前言&#x1f9e9;框架结构&#x1f4fa;效果展示&#x1f680;完整代码 &#x1f6a9;前言 我们前面写的两种方法&#xff08;静态和动态)&#xff0c;唯一缺点就是每次运行都要输入新的数据&#xff0c;很麻烦&#xff0c;也就是说写入的数据无法长久保…

树莓派5使用体验

原文地址&#xff1a;树莓派5使用体验 - Pleasure的博客 下面是正文内容&#xff1a; 前言 好久没有关于教程方面的博文了&#xff0c;由于最近打算入门嵌入式系统&#xff0c;所以就去购入了树莓派5开发板 树莓派5是2023年10月23日正式发售的&#xff0c;过去的时间不算太远吧…

XML文档节点导航与选择指南 | XPath基础知识

XPath&#xff08;XML Path Language&#xff09;是XSLT标准的主要组成部分。它用于在XML文档中浏览元素和属性&#xff0c;提供了一种强大的定位和选择节点的方式。 XPath的基本特点 代表XML路径语言&#xff1a; XPath是一种用于在XML文档中导航和选择节点的语言。 路径样式…

【CSS】新闻页面制作 案例一

&#xff08;大家好&#xff0c;今天我们将通过案例实战对之前学习过的CSS知识进行复习巩固&#xff0c;大家和我一起来吧&#xff0c;加油&#xff01;&#x1f495;&#xff09; 目录 一、前述 二、素材 案例文字素材 案例图片素材 三、案例分析 四、案例实施 五、应用…

Docker之镜像与容器的相关操作

目录 一、Docker镜像 搜索镜像 下载镜像 查看宿主机上的镜像 删除镜像 二、Docker容器 创建容器 查看容器 启停容器 删除容器 进入容器 创建/启动/进入容器 退出容器 查看容器内部信息 一、Docker镜像 Docker 运行容器前需要本地存在对应的镜像&#xff0c; 如…

安装包逆向2

import os import struct import lzma import hashlibDEBUG False # 调试标志 BASE_ADDRESS 0x00120200 # 基地址偏移量# Base类&#xff0c;用于存储基地址的数据 class Base:def __init__(self):self.startFilePos 0 # 基地址在文件中的起始位置self.data bytearray(0…

【蓝桥杯嵌入式】按键控制LED与LCD(必考三件套)

【蓝桥杯嵌入式】按键控制LED与LCD&#xff08;必考三件套&#xff09; 前言LED相关功能的实现LED基础功能函数&#xff08;点亮、全熄灭、翻转&#xff09;LED的闪烁与定时点亮熄灭流水灯的实现 按键的扫描及长短按、双击的实现按键的短按按键业务逻辑程序进程按键的长短按长短…

1995-2021年各省分品种能源产量和消费量数据

1995-2021年各省分品种能源产量和消费量数据 1、时间&#xff1a;1995-2021年 2、来源&#xff1a;能源统计年鉴、各省年鉴 3、指标&#xff1a;能源消费总量、煤炭消费量、焦炭消费量、原油消费量、汽油消费量、煤油消费量、柴油消费量、燃料油消费量、天然气消费量、电力消…

让智能体像孩子一样观察别人学习动作,跨视角技能学习数据集EgoExoLearn来了

ChatGPT狂飙160天&#xff0c;世界已经不是之前的样子。 新建了免费的人工智能中文站https://ai.weoknow.com 新建了收费的人工智能中文站https://ai.hzytsoft.cn/ 更多资源欢迎关注 在探索人工智能边界时&#xff0c;我们时常惊叹于人类孩童的学习能力 —— 可以轻易地将他人…

Unity学习笔记 - 第一个Hello World都算不上的项目

一、Unity安装 这里不细说安装了&#xff0c;首先需要Visual Studio&#xff0c;然后要安装Unity Hub&#xff0c;Unity Hub就像一个管理平台&#xff0c;安装完它之后&#xff0c;可以在它的界面上选择安装各个版本的编辑器。 开始您的创意项目并下载 Unity Hub | Unity通过 …