Redis持久化机制

AOF

把对redis的写操作记录下来,先执行命令,再执行写入,优势在于:

当然也有风险:丢失和对下一个命令造成阻塞

丢失的原因是执行写操作和记录日志是两个过程

下一个命令造成阻塞的原因是两个过程是同步的

第二个问题主要体现在,发生了将日志内容写入到硬盘,所以,有三种写回策略

先来看看Redis写入AOF日志的过程

 

写回策略就是作用于最后一步,有三种,Always、Everysec、No

三种都不能完美解决主进程阻塞和数据丢失的问题,三种各有利弊

三种写入策略的原理是控制fsync函数的调用时机

AOF重写机制

当该文件记录的很大之后,里面就会有一些对同一条的记录的多次操作,我们只需要保留最后一条最近的改动即可。

重写在日志文件大于64M的时候发生,不会放在主进程里面去做,放在后台子进程bgrewriteaof来完成,两个好处:不阻塞主进程(当发生页表复制和写时复制的时候,还是会阻塞);子进程带有父进程的数据副本

为什么需要子进程而不用子进程来做AOF的重写呢?

子线程之间共享内存,这样修改数据的时候需要通过加锁来保证数据的安全,影响性能。 如果是通过子线程来实现的话,父子进程会共享内存数据,但是这个共享的数据只能是以只读的方式来进行。当父子进程修改了任意一方日志文件,那这个时候就会发生写时复制,于是父子进程有了独立的数据副本。

子进程如何拥有父进程的数据副本呢?

fork子进程bgrewriteaof,操作系统会把主进程的页表复制一份给子进程,页表里面做的是虚拟内存和物理内存的映射,也就是说,子进程和父进程的虚拟内存空间不同,但是其对应的物理空间是同一个。

什么是写时复制?

当父子进程向这个内存发起写操作的时候,CPU会触发写保护中断,然后操作系统会在写保护中断函数里面进行物理内存的复制,更新页表,同时设置父子进程的读写权限是可读写,然后再会对这个内存进行读写。在发生写操作的时候,操作系统才会去复制物理内存。

主进程修改了已经存在的key-value的时候,就会发生写时复制,这里只会复制主进程修改的物理内存数据,没修改的物理内存还是与子进程是共享的。

RDB

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

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

相关文章

通俗理解大模型的各大微调方法:从LoRA、QLoRA到P-Tuning V1/V2

前言 PEFT 方法仅微调少量(额外)模型参数,同时冻结预训练 LLM 的大部分参数 第一部分 高效参数微调的发展史 1.1 Google之Adapter Tuning:嵌入在transformer里 原有参数不变 只微调新增的Adapter 谷歌的研究人员首次在论文《Parameter-Efficient Tran…

RabbitMQ输出日志配置

参考地址rabbitmq启用日志功能记录消息队列收发情况_rabbitmq开启日志_普通网友的博客-CSDN博客 启用日志插件命令 # 设置用户权限 rabbitmqctl set_user_tags mqtt-user administrator rabbitmqctl set_permissions -p / mqtt-user ".*" ".*" ".*&…

《命运》阅读笔记

《命运》阅读笔记 2023年5月17号在杭州的小屋读完,我读完后,脑海里经常把余华的《活着》和这本《命运》的故事情节搞混淆,几乎都是讲着生活的苦难。全文以阿太(外婆的妈妈)的视角,在她九十九岁的人生里&…

利用PostGIS自带工具导入shp数据

一、shapefile导入PostGIS 1、利用PostGIS自带工具导入 开始程序搜索如下工具 打开工具界面如下图,点击View conncetion details进行数据库连接,点击Add File进行Shapefile所在路径加载,点击Option进行编码设置,设置完成后点击Im…

数据安全与可追溯:PDM系统的信息保护锦囊

在当今数字化时代,数据安全与可追溯是企业管理中至关重要的环节。PDM系统(Product Data Management,产品数据管理)作为一款强大的数字化工具,为企业提供了全方位的信息保护锦囊。让我们一同深入探讨,看看PD…

半导体制造工艺流程

本资料仅用于学习和讨论,如有侵权请反应 1、半导体制造工艺流程-要求 1.1 英特尔50亿纳米的制作工艺 2、第一步 晶圆加工 2.1 第一步 晶圆加工 2.2 第二步 氧化 2.3 第三步 光刻 2.4第四步 刻蚀 2.5 第五步 薄膜沉积 2.6 第六步 互连 2.7 第七步 测试 2.8…

【网络基础实战之路】基于MGRE多点协议的实战详解

系列文章传送门: 【网络基础实战之路】设计网络划分的实战详解 【网络基础实战之路】一文弄懂TCP的三次握手与四次断开 【网络基础实战之路】基于MGRE多点协议的实战详解 【网络基础实战之路】基于OSPF协议建立两个MGRE网络的实验详解 PS:本要求基于…

Cesium 实战教程 - 调整 3dtiles 倾斜摄影大小

Cesium 实战教程 - 调整 3dtiles 倾斜摄影大小 核心代码完整代码在线示例 之前由于误解遇到一个特殊的需求:想要把三维球上叠加倾斜摄影进行自由放大缩小,跟随地图的缩放进行缩放。 后来经过搜索、尝试,终于实现了需求。 但是,后…

ClickHouse SQL与引擎--基本使用(一)

1.查看所有的数据库 show databases; 2.创建库 CREATE DATABASE zabbix ENGINE Ordinary; ATTACH DATABASE ck_test ENGINE Ordinary;3.创建本地表 CREATE TABLE IF NOT EXISTS test01(id UInt64,name String,time UInt64,age UInt8,flag UInt8 ) ENGINE MergeTree PARTI…

【单调栈part03】| 84.柱状图中的最大矩形

🎈LeetCode84.柱状图中的最大矩形 链接:84.柱状图中的最大矩形 给定 n 个非负整数,用来表示柱状图中各个柱子的高度。每个柱子彼此相邻,且宽度为 1 。 求在该柱状图中,能够勾勒出来的矩形的最大面积 public static in…

金融学复习博迪(第1-5章)

第一部分 金融和金融体系 第1章 金融学 金融:资金的流通,即储蓄,信贷、汇兑、股票和证券交易等经济活动的总称。 金融学:研究货币流通的学问。 传统的金融学研究领域大致有两个方向: >宏观层面的金融市场运行理论…

【C++】数据结构与算法:常用排序算法

😏★,:.☆( ̄▽ ̄)/$:.★ 😏 这篇文章主要介绍常用排序算法。 学其所用,用其所学。——梁启超 欢迎来到我的博客,一起学习,共同进步。 喜欢的朋友可以关注一下,下次更新不迷路&#x1…

2023年C++面试宝典

目录 第一章:C基础知识1.1 C语言起源与发展1.2 C的重要特点和优点1.3 C的数据类型和变量1.4 函数和命名空间1.5 运算符和表达式 第二章:面向对象编程2.1 类与对象的概念2.2 封装、继承和多态2.3 构造函数和析构函数2.4 静态成员和常量成员2.5 虚函数和纯…

服务器的shell脚本

shell脚本语句可以执行linux的操作语句。 linux相当于网页,shell相当于java。可以解释编写执行逻辑。 shell的开头以:#!bin/sh 定义解析方式,不同的linuxe内核解释方式不同。大多数内核支持sh(bash)方式。 执行sh文件可…

Intellij IDEA运行报Command line is too long的解决办法

想哭,vue前端运行起来,对应的后端也得起服务。 后端出的这个bug,下面的博客写的第二种方法,完整截图是下面这个。 ​​​​​​​​​​​​​​​​​​​​Intellij IDEA运行报Command line is too long的解决办法 - 知乎 (zh…

Jmeter组件作用域及执行顺序

目录 一、Jmeter八大可执行元件 二、组件执行顺序 三、组件作用域 四、特殊说明 一、Jmeter八大可执行元件 配置元件---Config Element 用于初始化默认值和变量,以便后续采样器使用。配置元件大其作用域的初始阶段处理,配置元件仅对其所在的测试树分…

【C++】做一个飞机空战小游戏(五)——getch()控制两个飞机图标移动(控制光标位置)

[导读]本系列博文内容链接如下: 【C】做一个飞机空战小游戏(一)——使用getch()函数获得键盘码值 【C】做一个飞机空战小游戏(二)——利用getch()函数实现键盘控制单个字符移动【C】做一个飞机空战小游戏(三)——getch()函数控制任意造型飞机图标移动 【C】做一个飞…

【云原生】K8S二进制搭建二:部署CNI网络组件

目录 一、K8S提供三大接口1.1容器运行时接口CRI1.2云原生网络接口CNI1.3云原生存储接口CSI 二、Flannel网络插件2.1K8S中Pod网络通信2.2Overlay Network2.3VXLAN2.4Flannel 三、Flannel udp 模式的工作原理3.1ETCD 之 Flannel 提供说明 四、vxlan 模式4.1Flannel vxlan 模式的工…

Total Variation loss

Total Variation loss 适合任务 图像复原、去噪等 处理的问题 图像上的一点点噪声可能就会对复原的结果产生非常大的影响,很多复原算法都会放大噪声。因此需要在最优化问题的模型中添加一些正则项来保持图像的光滑性,图片中相邻像素值的差异可以通过…

ardupilot 中坐标变换矩阵和坐标系变换矩阵区别

目录 文章目录 目录摘要1.坐标变换矩阵与坐标系变换矩阵摘要 本节主要记录ardupilot 中坐标变换矩阵和坐标系变换矩阵的区别,这里非常重要,特别是进行姿态误差计算时,如果理解错误,很难搞明白后面算法。 1.坐标变换矩阵与坐标系变换矩阵 坐标变换矩阵的本质含义:是可以把…