Redis修炼 (15. redis的持久化-RDB)

news2024/11/25 16:04:39

RDB

就是 redis database backup file
数据备份文件 就是把内存中的所有数据都保存在磁盘中。

save

注意这个保存过程是主进程在做 因为redis 是单线程 所有其他所有请求都会被卡死。

bgsave

这个稍微友好一点 是子进程 执行,避免主进程收到影响。


redis在服务停机的时候 它自动就会做一次 RDB的保存 (保存在本机运行目录)

保存完之后 它才会真正退出。


配置文件中 都可以修改这些项

在这里插入图片描述


异步持久化的原理

sava命令的主进程 持久化 这个简单理解。

我们聊一下 这个命令 bgsave 他是怎么异步子进程完成内存数据写入RDB的:

在操作系统中 主进程是无法直接染指物理内存的 而是由操作系统分配虚拟内存 然后通过虚拟内存和物理内存的映射表 也叫 页表 去读取数据。

所以当bgsave进行的时候 主进程会 创建一个子进程 然后将自己的 映射表 复制给 子进程。 这时候 子进程通过映射表 去内存里面读取数据

在这里插入图片描述

RDB 的缺点

它的执行间隔时间 比较长, 两次rdb写入数据有丢失的风险

因为fork也是有时间 有代价的 如果你把间隔时间调的很短 子进程根本忙不过来

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

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

相关文章

【JavaWeb】-- Maven基础、MyBatis

文章目录 Maven基础1.Maven简介1.1 Maven模型1.2 仓库 2.Maven安装3.Maven基本使用3.1 Maven常用命令3.2 Maven生命周期 4.IDEA使用Maven4.1 IDEA配置Maven环境4.2 Maven坐标4.3 IDEA 创建Maven项目 5.依赖管理5.1 使用坐标引入jar包5.2 依赖范围 MyBatis1.MyBatis概述1.1JDBC的…

JDK、JRE和JVM三者的区别和联系

一、JDK、JRE、JVM分别是什么 (一)JDK JDK,全称Java Development Kit,是 Java 语言的软件开发工具包,主要用于移动设备、嵌入式设备上的Java应用程序。JDK是整个Java开发的核心。 (二)JRE J…

Day970.数据库表解耦 -遗留系统现代化实战

数据库表解耦 Hi,我是阿昌,今天学习记录的是关于数据库表解耦的内容。 微服务拆分之初,需要搭建好的两个基础设施,一个是基于开关的反向代理,另一个是数据同步机制。 有了这两个设施做保障,接下来就可以…

Python合并同名Labelme标注文件内容

Python合并同名Labelme标注文件内容 前言前提条件相关介绍实验环境Python合并同名Labelme标注文件内容Json文件代码实现输出结果json文件 前言 本文是个人使用Python处理文件的电子笔记,由于水平有限,难免出现错漏,敬请批评改正。 (https://b…

Sping核心知识点总结

Spring框架日渐成熟,已经成为java开发中比不可少的部分,框架这东西我的理解里属于工具型应用,意味着如果没有大量实践之前之间研究理论 研究源码之类的 体会会很效率会很低,所以个人建议萌新先找个项目做一做,感受一下…

【C/C++的内存管理】

欢迎阅读本篇文章 前言🍕1. C/C内存分布1.1有关C/C的一道题目 🍕2. C语言中动态内存管理方式:malloc/calloc/realloc/free🍕3. C内存管理方式3.1 new/delete操作内置类型3.2 new和delete操作自定义类型 🍕4. operator …

论国内如何免费使用GPT4

什么是GPT,能做什么? GPT,全名为Generative Pre-trained Transformer,是一类基于Transformer架构的自然语言处理模型。GPT的主要功能包括: 文本生成:能够根据给定的输入生成合理的文本,如文章、…

双向链表实现约瑟夫问题

title: 双向链表实现约瑟夫问题 date: 2023-05-16 11:42:26 tags: **问题:**知n个人围坐在一张圆桌周围。从编号为k的人开始报数,数到m的那个人出列;他的下一个人又从1开始报数,数到m的那个人又出列;依此规律重复下去&…

Java进阶-Collection集合

1.Collection集合 1.1数组和集合的区别 相同点 都是容器,可以存储多个数据 不同点 数组的长度是不可变的,集合的长度是可变的 数组可以存基本数据类型和引用数据类型 集合只能存引用数据类型,如果要存基本数据类型,需要存对应的…

ubuntu20.04开机界面黑屏,只有一个光标闪烁

接下来我就把我的解决方法完整的发出来,因为我也是非常的绝望,终于在不断尝试中解决了问题 首先开机界面就是这个东西,一直卡在这不动了,原因就是,内存被用完了,无法加载出图形化界面 解决方法&#xff1…

springboot基于vue的MOBA类游戏攻略分享平台

系统分析 系统可行性分析 1、经济可行性 由于本系统本身存在一些技术层面的缺陷,并不能直接用于商业用途,只想要通过该系统的开发提高自身学术水平,不需要特定服务器等额外花费。所有创造及工作过程仅需在个人电脑上就能实现,使…

Redis学习--下载与安装

Redis下载与安装 Redis安装包分为windows版和Linux版: Windows版下载地址:https://github.com/microsoftarchive/redis/releases Linux版下载地址:https:/download.redis.io/releases 在Linux系统安装Redis步骤: 1.将Redis安装…

JENKINS部署-学习踩坑日记

1、JENKINS情况介绍 使用docker安装JENKINS,教程可以在网上搜到,步骤执行; 2、服务器情况介绍 JENKINS部署在A服务器上面,要把项目从gitlab上面拉取下来,然后编译推送jar到B服务器,然后通过docker-compose…

Linux:文本三剑客之sed编辑器

Linux:sed编辑器 一、sed1.1 sed编辑器1.2 sed编辑器的工作流程1.3 命令格式1.4常用选项1.5 常用操作1.6 实际应用 一、sed 1.1 sed编辑器 sed是一种流编辑器,流编辑器会在编辑器处理数据之前基于预先提供的一组规则来编辑数据流。sed编辑器可以根据命…

理解JVM

认识JVM Java 虚拟机(JVM)是运行 Java 字节码的虚拟机。 什么是字节码? 字节码就是jvm能理解的代码。即扩展名为 .class 的文件。 我们日常的java文件先编译成.class 文件 然后在jvm上运行。 个人觉得 内存区域是理解JVM相关的基石。所以彻…

微服务简介,SpringCloud Alibaba Nacos的安装部署与使用,Nacos集成springboot

目录 一.认识微服务 1.0.学习目标 1.1.单体架构 单体架构的优缺点如下: 1.2.分布式架构 分布式架构的优缺点: 1.3.微服务 微服务的架构特征: 1.4.SpringCloud 1.5Nacos注册中心 1.6.总结 二、Nacos基本使用 (一&…

【C++】深入剖析C++11新特性

目录 一、C11简介 二、统一的列表初始化 1.{}初始化 2.std::initializer_list 三、声明 1.auto 2.decltype 3.nullptr 四、范围for 五、final和oberride 六、STL中一些变化 1.array 2.forward_list 3.unordered_map和unordered_set 七、右…

RabbitMQ养成记 (2. java操作MQ快速入门,日志监控,消息追踪)

快速入门 刚开始我们就一步一步来, 先搞什么spring集成。 先使用原始的java代码来操作一下MQ。 这里给新手兄弟的建议,这种技术性的学习 一定要先动手,从简单的地方动手,一步一步来,不然上来就搞理论或者复杂的应用很…

JDBC API

注册数据库驱动 Class.forName("com.mysql.jdbc.Driver"); 所谓的注册驱动,就是让JDBC程序加载mysql驱动程序,并管理驱动 驱动程序实现了JDBC API定义的接口以及和数据库服务器交互的功能,加载驱动是为了方便使用这些功能。 获…

Spring IOC相关注解运用——下篇

目录 一、Configuration 二、ComponentScan 1. 说明 2. 测试方法 3. 运行结果 三、PropertySource 1. 说明 2. 测试方法 3. 测试结果 四、Bean 1. 说明 2. 添加驱动依赖 3. 将Connection对象放入Spring容器 3. 测试 五、Import 1. 说明 2. 测试方法 3. 运行结…