Redis持久化之RDB解读
目录
什么是RDB
配置位置参数解读
如何使用
自动触发
手动触发
save
bgsave
RDBRDB持久化文件的恢复
正常恢复
恢复失败处理方法
RDB优势
RDB 缺点
redis是一个内存数据库,当redis服务器重启,获取电脑重启,数据会丢失,我们可以将redis内存中的数据持久化保存到硬盘的文件中
持久化的方式有:
- RDB:定时将数据保存在硬盘中(dump.rdb)(默认)
- AOF:保存所有操作的命令
什么是RDB
在指定的时间间隔内将内存中的数据集快照写入磁盘,也就是行话讲的Snapshot快照,它恢复时是将快照文件直接读到内存里
Redis会单独创建(fork)一个子进程来进行持久化,会先将数据写入到一个临时文件中,待持久化过程都结束了,再用这个临时文件替换上次持久化好的文件。整个过程中,主进程是不进行任何IO操作的。这就确保了极高的性能。如果需要进行大规模数据的恢复,且对于数据恢复的完整性不是非常敏感,那RDB方式要比AOF方式更加的高效。
RDB的缺点是最后一次持久化后的数据可能丢失。我们默认的就是RDB,一般情况下不需要修改这个配置
rdb保存的文件是dump.rdb都是可以在我们的配置文件中快照中进行配置的

配置位置参数解读
rdb文件的保存路径,也可以修改。默认为Redis启动时命令行所在的目录下
dir "/myredis/"
默认1分钟内至少发生10000次keys变化或者15分钟内至少发生100次keys变化或者1小时内至少发生1次keys变化
# 周期性执行条件的设置格式为
save <seconds> <changes># 默认的设置为:
# 如果900秒内有1条Key信息发生变化,则进行快照
save 900 1
# 如果300秒内有10条Key信息发生变化,则进行快照
save 300 10
# 如果60秒内有10000条Key信息发生变化,则进行快照
save 60 10000
如何使用
自动触发
- redis.conf中配置save m n,即在m秒内有n次修改时,自动触发bgsave生成rdb文件
- 主从复制时,从节点要从主节点进行全量复制时也会触发bgsave操作,生成当时的快照发送到从节点
- 执行debug reload命令重新加载redis时也会触发bgsave操作
- 默认情况下执行shutdown命令时,如果没有开启aof持久化,那么也会触发bgsave操作
执行flushall命令,也会产生dump.rdb文件,但里面是空的,无意义 ,所以一般情况下要备份的话,执行fushall命令之前,我们可以先把dump.rdb备份一份到其他地方。
手动触发
redis客户端执行bgsave命令或者自动触发bgsave命令
| 方式 | save指令 | bgsave指令 |
|---|---|---|
| 读写 | 同步 | 异步 |
| 阻塞客户端指令 | 是 | 否 |
| 额外内存消耗 | 否 | 是 |
| 启动新进程 | 否 | 是 |
save
save 命令执行一个同步保存操作,将当前 Redis 实例的所有数据快照(snapshot)以 RDB 文件的形式保存到硬盘。很少在生产环境直接使用SAVE命令,因为它会阻塞所有的客户端的请求,可以使用BGSAVE命令代替。如果在BGSAVE命令的保存数据的子进程发生错误的时,用SAVE命令保存最新的数据是最后的手段。
redis> SAVE
OK
bgsave
Bgsave 命令用于在后台异步保存当前数据库的数据到磁盘。BGSAVE 命令执行之后立即返回 OK ,然后 Redis fork 出一个新子进程,原来的 Redis 进程(父进程)继续处理客户端请求,而子进程则负责将数据保存到磁盘,然后退出。
redis> BGSAVE
Background saving started
返回值:反馈信息。
RDBRDB持久化文件的恢复
正常恢复
- 将备份的 RDB 文件复制到 Redis 的工作目录中。
- 在 Redis 配置文件中设置 dbfilename 和 dir 参数,分别为 RDB 文件名和路径。
- 启动 Redis 服务器即可。
查看需要存在的位置:
127.0.0.1:6379> config get dir
1) "dir"
2) "/data"
恢复失败处理方法
如果 RDB 文件损坏或不完整,可以尝试使用 Redis 自带的 redis-check-rdb 工具来检查文件的有效性,并尝试修复文件中的错误。
redis-check-dump FILENAME
RDB优势
- RDB 是 Redis 数据的一个非常紧凑的单文件时间点表示形式。RDB 文件非常适合备份。例如,您可能希望每隔 24 小时存档一次 RDB 文件,并将 RDB 快照每天保存 30 天。这使您可以在发生灾难时轻松还原数据集的不同版本。
- RDB 非常适合灾难恢复,它是一个可以传输到远程数据中心或 Amazon S3(可能加密)的单个紧凑文件。
- RDB 最大限度地提高了 Redis 性能,因为 Redis 父进程为了持久化而需要做的唯一工作是分叉一个子进程,该子进程将完成所有其余工作。父进程永远不会执行磁盘 I/O 或类似操作。
- 与 AOF 相比,RDB 允许更快地重新启动大数据集。
RDB 缺点
- 如果您需要在 Redis 停止工作(例如停电后)将数据丢失的可能性降至最低,则 RDB 不好。您可以在生成 RDB 的位置配置不同的保存点(例如,在至少 100 分钟和针对数据集写入 <> 次后,您可以有多个保存点)。但是,您通常会每五分钟或更长时间创建一个 RDB 快照,因此,如果 Redis 因任何原因在没有正确关闭的情况下停止工作,您应该准备好丢失最新几分钟的数据。
- RDB 经常需要 fork() 才能使用子进程持久化在磁盘上。如果数据集很大,fork() 可能会很耗时,如果数据集非常大且 CPU 性能不是很好,则可能会导致 Redis 停止为客户端提供服务几毫秒甚至一秒钟。AOF 还需要 fork(),但频率较低,您可以调整重写日志的频率,而无需牺牲持久性。
相关文章:
Redis持久化之RDB解读
目录 什么是RDB 配置位置参数解读 如何使用 自动触发 手动触发 save bgsave RDBRDB持久化文件的恢复 正常恢复 恢复失败处理方法 RDB优势 RDB 缺点 redis是一个内存数据库,当redis服务器重启,获取电脑重启,数据会丢失,我们可以将redis内存中的数据持久化保存到硬盘…...
四维图新 minemap实现地图漫游效果
原理就是不断改变地图中心点,改变相机角度方向,明白这一点,其他地图引擎譬如cesium都可效仿,本人就是通过cesium的漫游实现四维图新的漫游,唯一不足的是转弯的时候不能丝滑转向,尝试过应该是四维图新引擎的…...
centos7安装MySQL8
Centos7安装MySQL8 MySQL版本:8.0.34 1.安装前准备 (1)查看是否安装mariadb [rootkb135 ~]# rpm -qa|grep mariadb (2)卸载mariadb并检查是否卸干净 [rootkb135 ~]# rpm -e --nodeps mariadb-libs-5.5.68-1.el7.x8…...
【IMX6ULL驱动开发学习】10.Linux I2C驱动实战:AT24C02驱动设计流程
前情回顾:【IMX6ULL驱动开发学习】09.Linux之I2C框架简介和驱动程序模板_阿龙还在写代码的博客-CSDN博客 目录 一、修改设备树(设备树用来指定引脚资源) 二、编写驱动 2.1 i2c_drv_read 2.2 i2c_drv_write 2.3 完整驱动程序 三、上机测…...
【C++】详解声明和定义
2023年8月28日,周一下午 研究了一个下午才彻底弄明白... 写到晚上才写完这篇博客。 目录 声明和定义的根本区别结构体的声明和定义声明结构体 定义结构体类的声明和定义函数的定义和声明声明函数 定义函数变量声明和定义声明变量定义变量 声明和定义的根本区别 …...
掌握C/C++协程编程,轻松驾驭并发编程世界
一、引言 协程的定义和背景 协程(Coroutine),又称为微线程或者轻量级线程,是一种用户态的、可在单个线程中并发执行的程序组件。协程可以看作是一个更轻量级的线程,由程序员主动控制调度。它们拥有自己的寄存器上下文…...
MyBatis-Plus的分页配置类
文章目录 package com.itheima.reggie.config;import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor; import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor; import org.springframework.context.annotation.Bean; imp…...
排序算法-选择排序(Java)
选择排序 选择排序 (selection sort)的工作原理非常直接:开启一个循环,每轮从未排序区间选择最小的元素,将其放到已排序区间的末尾。 算法原理 排序数组:(2 4 3 1 5 2) …...
SpringBoot 怎么返回html界面
方法一: (1)html文件要放在resource下的static目录下(没有static 自己就创建一个文件夹) (2)在application.yml 中配置视图解析器 spring:mvc:view:prefix: /suffix: .html (3&a…...
watch computed 和 method
在Vue中,watch computed 和 method有啥区别,有啥作用,适用于何种情景并代码举例 在Vue中,watch、computed和methods是三种不同的属性,用于处理不同的场景和需求。 watch:watch用于监听数据的变化并执行相…...
数据结构,线性表有哪些
线性表是一种常见的数据结构,它的特点是数据元素之间存在一对一的线性关系。根据线性表的存储方式和实现方式,线性表主要有以下几种: 1. 顺序表(Sequential List): - 通常使用数组实现。 - 元素在内存中是连续…...
服务间通过Feign相互调用报错,参数是MultiparFile、参数是POJO报错
目录 1.Feign传文件报错,Feign不支持上传文件需要借助外面的依赖才可以实现上传 2.服务之间通过Feign相互调用传递DTO(实体对象)报错 1.Feign传文件报错,Feign不支持上传文件需要借助外面的依赖才可以实现上传 具体报错内容: FileUploadException: the request was reje…...
Flutter系列文章-Flutter应用优化
当涉及到优化 Flutter 应用时,考虑性能、UI 渲染和内存管理是至关重要的。在本篇文章中,我们将通过实例深入讨论这些主题,展示如何通过优化技巧改进你的 Flutter 应用。 代码性能优化 1. 使用 const 构造函数 在构建小部件时,尽…...
opencv案例03 -基于OpenCV实现二维码生成,发现,定位,识别
1.二维码的生成 废话不多说,直接上代码 # 生成二维码 import qrcode# 二维码包含的示例数据 data "B0018" # 生成的二维码图片名称 filename "qrcode.png" # 生成二维码 img qrcode.make(data) # 保存成图片输出 img.save(filename)img.sh…...
叠螺式污泥脱水机的要点及价格分析
诸城市鑫淼环保小编带大家了解一下叠螺式污泥脱水机的要点及价格分析 设备工作步骤 叠螺脱水机在工作时分为3个步骤,分别是稀释、脱水、自洗濯: 1、稀释:当螺旋推进轴迁移转变时,设在推进轴核心的多重固活叠片挪动,在重…...
Visual Studio中Linux开发头文件intellisense问题的解决办法
文章目录 前言个人环境 SSH到WSL复制文件后记 前言 最近在用我心爱的Visual Studio配合WSL2做一些Linux开发,但是有一个问题,就是当我#include <sys/socket.h>,会提示找不到文件 我尝试了各种姿势,包括修改CMakeSettings.…...
如何以CPU方式启动Stable Diffusion WebUI?
默认情况下Stable Diffusion WebUI采用GPU模式运行,但是稍微运行起来就知道至少需要4G的显存,2G显存虽然能够通过带--lowvram运行起来,但是能够炼出来的图基本都是512x512的,不能够炼大图,如果你刚好和我一样家境贫寒&…...
HTTP 框架修炼之道 | 青训营
Powered by:NEFU AB-IN 文章目录 HTTP 框架修炼之道 | 青训营 走进 HTTP 协议HTTP 框架的设计与实现应用层中间件层路由设计协议层 传输层(网络层)1. BIO(Blocking I/O):2. NIO(Non-blocking I/O):区别&…...
【活动】怎么维护电脑?
无论是学习还是工作,电脑都是IT人必不可少的重要武器,一台好电脑除了自身配置要经得起考验,后期主人对它的维护也是决定它寿命的重要因素! 其实这是个伪命题,就像穿衣一样,有的人喜欢干净整洁,…...
Linux安装Docker
文章目录 先决条件开始安装1.卸载旧版本2.安装依赖3.切换数据源4.安装Docker5.启动服务6.查看版本7.查看端口8.测试拉取镜像 同系列文章 先决条件 Linux内核版本高于3.1 开始安装 1.卸载旧版本 yum remove docker \docker-client \docker-client-latest \docker-common \doc…...
FlowState Lab模型微调教程:使用自定义数据集训练专属波动模型
FlowState Lab模型微调教程:使用自定义数据集训练专属波动模型 1. 学习目标与前置准备 想为特定领域打造专属的波动预测模型吗?本文将带你完成从数据准备到模型评估的全流程。学完本教程,你将能够: 准备符合要求的时序/空间序列…...
基于Python的流浪动物救助平台毕业设计
博主介绍:✌ 专注于Java,python,✌关注✌私信我✌具体的问题,我会尽力帮助你。一、研究目的本研究旨在构建一个基于Python的流浪动物救助平台,以实现流浪动物的有效救助与管理工作。具体研究目的如下: 首先,通过构建流…...
从0到1:Java+AI入门实战,看完直接上手项目
文章目录前言环境准备:别急着装Python,先把JDK升到21第一滴血:让Java程序说出"人话"进阶玩法:给AI装上"记忆"和"工具"让AI记住你们聊过啥让AI能查数据库、调接口实战项目:搭建私有知识库…...
QLVideo终极指南:让macOS Finder完美预览所有视频格式
QLVideo终极指南:让macOS Finder完美预览所有视频格式 【免费下载链接】QuickLookVideo This package allows macOS Finder to display thumbnails, static QuickLook previews, cover art and metadata for most types of video files. 项目地址: https://gitcod…...
腾讯云+Astrbot个人AI部署,接入QQ机器人
1、腾讯云创建云服务器 之所以选择腾讯云是因为可以领一个月免费服务器 地址:https://cloud.tencent.com/ 服务器配置情况: 这里我获取的是轻量应用服务器(Lighthouse),适合网站搭建、开发测试等多种场景。以下是详细…...
别再只会while(1)了!聊聊MCU裸机开发的6种实用架构,从51到STM32都能用
从超级循环到事件驱动:MCU裸机开发的6种架构实战指南 当你第一次点亮LED时,while(1)循环就像魔法一样简单有效。但随着项目复杂度增加——需要同时处理按键消抖、屏幕刷新、数据通信和状态管理时,那个曾经可靠的超级循环突然变成了意大利面条…...
Windows右键菜单终极管理指南:ContextMenuManager完全掌控你的系统交互体验
Windows右键菜单终极管理指南:ContextMenuManager完全掌控你的系统交互体验 【免费下载链接】ContextMenuManager 🖱️ 纯粹的Windows右键菜单管理程序 项目地址: https://gitcode.com/gh_mirrors/co/ContextMenuManager Windows右键菜单管理一直…...
SDMatte惊艳效果展示:高清透明PNG在海报/PPT/详情页真实复用案例
SDMatte惊艳效果展示:高清透明PNG在海报/PPT/详情页真实复用案例 1. 为什么你需要关注SDMatte 在日常设计工作中,抠图可能是最耗时但又必不可少的环节。无论是制作电商详情页、设计海报还是准备PPT素材,一个高质量的透明背景图片往往能大幅…...
Python无GIL时代来了?揭秘CPython 3.13+无锁并发模型的8个高频面试陷阱
第一章:Python无GIL时代的技术演进与核心变革Python长期以来受全局解释器锁(GIL)制约,在多核CPU场景下难以实现真正的并行计算。随着CPython 3.13正式引入实验性“自由线程模式”(Free-threading Mode)&…...
Python3与pysoem实战:基于SDO的EtherCAT伺服电机多模式控制
1. 环境准备与基础配置 在开始EtherCAT伺服电机控制之前,我们需要搭建一个稳定的开发环境。我推荐使用Ubuntu 20.04 LTS作为基础系统,这个版本对Python3和网络驱动的支持都非常完善。在实际项目中,我发现普通用户权限往往无法直接操作网卡设备…...
