当前位置: 首页 > news >正文

Redis持久化之RDB解读

目录

什么是RDB

配置位置参数解读

如何使用

自动触发

手动触发

save

 bgsave

RDBRDB持久化文件的恢复

正常恢复 

恢复失败处理方法

RDB优势

RDB 缺点


 redis是一个内存数据库,当redis服务器重启,获取电脑重启,数据会丢失,我们可以将redis内存中的数据持久化保存到硬盘的文件中

持久化的方式有:

  1. RDB:定时将数据保存在硬盘中(dump.rdb)(默认)
  2. 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实现地图漫游效果

原理就是不断改变地图中心点&#xff0c;改变相机角度方向&#xff0c;明白这一点&#xff0c;其他地图引擎譬如cesium都可效仿&#xff0c;本人就是通过cesium的漫游实现四维图新的漫游&#xff0c;唯一不足的是转弯的时候不能丝滑转向&#xff0c;尝试过应该是四维图新引擎的…...

centos7安装MySQL8

Centos7安装MySQL8 MySQL版本&#xff1a;8.0.34 1.安装前准备 &#xff08;1&#xff09;查看是否安装mariadb [rootkb135 ~]# rpm -qa|grep mariadb &#xff08;2&#xff09;卸载mariadb并检查是否卸干净 [rootkb135 ~]# rpm -e --nodeps mariadb-libs-5.5.68-1.el7.x8…...

【IMX6ULL驱动开发学习】10.Linux I2C驱动实战:AT24C02驱动设计流程

前情回顾&#xff1a;【IMX6ULL驱动开发学习】09.Linux之I2C框架简介和驱动程序模板_阿龙还在写代码的博客-CSDN博客 目录 一、修改设备树&#xff08;设备树用来指定引脚资源&#xff09; 二、编写驱动 2.1 i2c_drv_read 2.2 i2c_drv_write 2.3 完整驱动程序 三、上机测…...

【C++】详解声明和定义

2023年8月28日&#xff0c;周一下午 研究了一个下午才彻底弄明白... 写到晚上才写完这篇博客。 目录 声明和定义的根本区别结构体的声明和定义声明结构体 定义结构体类的声明和定义函数的定义和声明声明函数 定义函数变量声明和定义声明变量定义变量 声明和定义的根本区别 …...

掌握C/C++协程编程,轻松驾驭并发编程世界

一、引言 协程的定义和背景 协程&#xff08;Coroutine&#xff09;&#xff0c;又称为微线程或者轻量级线程&#xff0c;是一种用户态的、可在单个线程中并发执行的程序组件。协程可以看作是一个更轻量级的线程&#xff0c;由程序员主动控制调度。它们拥有自己的寄存器上下文…...

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)

选择排序 选择排序 &#xff08;selection sort&#xff09;的工作原理非常直接&#xff1a;开启一个循环&#xff0c;每轮从未排序区间选择最小的元素&#xff0c;将其放到已排序区间的末尾。 算法原理 排序数组&#xff1a;&#xff08;2 4 3 1 5 2&#xff09; &#xf…...

SpringBoot 怎么返回html界面

方法一&#xff1a; &#xff08;1&#xff09;html文件要放在resource下的static目录下&#xff08;没有static 自己就创建一个文件夹&#xff09; &#xff08;2&#xff09;在application.yml 中配置视图解析器 spring:mvc:view:prefix: /suffix: .html &#xff08;3&a…...

watch computed 和 method

在Vue中&#xff0c;watch computed 和 method有啥区别&#xff0c;有啥作用&#xff0c;适用于何种情景并代码举例 在Vue中&#xff0c;watch、computed和methods是三种不同的属性&#xff0c;用于处理不同的场景和需求。 watch&#xff1a;watch用于监听数据的变化并执行相…...

数据结构,线性表有哪些

线性表是一种常见的数据结构&#xff0c;它的特点是数据元素之间存在一对一的线性关系。根据线性表的存储方式和实现方式&#xff0c;线性表主要有以下几种&#xff1a; 1. 顺序表&#xff08;Sequential List&#xff09;: - 通常使用数组实现。 - 元素在内存中是连续…...

服务间通过Feign相互调用报错,参数是MultiparFile、参数是POJO报错

目录 1.Feign传文件报错,Feign不支持上传文件需要借助外面的依赖才可以实现上传 2.服务之间通过Feign相互调用传递DTO(实体对象)报错 1.Feign传文件报错,Feign不支持上传文件需要借助外面的依赖才可以实现上传 具体报错内容: FileUploadException: the request was reje…...

Flutter系列文章-Flutter应用优化

当涉及到优化 Flutter 应用时&#xff0c;考虑性能、UI 渲染和内存管理是至关重要的。在本篇文章中&#xff0c;我们将通过实例深入讨论这些主题&#xff0c;展示如何通过优化技巧改进你的 Flutter 应用。 代码性能优化 1. 使用 const 构造函数 在构建小部件时&#xff0c;尽…...

opencv案例03 -基于OpenCV实现二维码生成,发现,定位,识别

1.二维码的生成 废话不多说&#xff0c;直接上代码 # 生成二维码 import qrcode# 二维码包含的示例数据 data "B0018" # 生成的二维码图片名称 filename "qrcode.png" # 生成二维码 img qrcode.make(data) # 保存成图片输出 img.save(filename)img.sh…...

叠螺式污泥脱水机的要点及价格分析

诸城市鑫淼环保小编带大家了解一下叠螺式污泥脱水机的要点及价格分析 设备工作步骤 叠螺脱水机在工作时分为3个步骤&#xff0c;分别是稀释、脱水、自洗濯&#xff1a; 1、稀释&#xff1a;当螺旋推进轴迁移转变时&#xff0c;设在推进轴核心的多重固活叠片挪动&#xff0c;在重…...

Visual Studio中Linux开发头文件intellisense问题的解决办法

文章目录 前言个人环境 SSH到WSL复制文件后记 前言 最近在用我心爱的Visual Studio配合WSL2做一些Linux开发&#xff0c;但是有一个问题&#xff0c;就是当我#include <sys/socket.h>&#xff0c;会提示找不到文件 我尝试了各种姿势&#xff0c;包括修改CMakeSettings.…...

如何以CPU方式启动Stable Diffusion WebUI?

默认情况下Stable Diffusion WebUI采用GPU模式运行&#xff0c;但是稍微运行起来就知道至少需要4G的显存&#xff0c;2G显存虽然能够通过带--lowvram运行起来&#xff0c;但是能够炼出来的图基本都是512x512的&#xff0c;不能够炼大图&#xff0c;如果你刚好和我一样家境贫寒&…...

HTTP 框架修炼之道 | 青训营

Powered by:NEFU AB-IN 文章目录 HTTP 框架修炼之道 | 青训营 走进 HTTP 协议HTTP 框架的设计与实现应用层中间件层路由设计协议层 传输层&#xff08;网络层&#xff09;1. BIO&#xff08;Blocking I/O&#xff09;:2. NIO&#xff08;Non-blocking I/O&#xff09;:区别&…...

【活动】怎么维护电脑?

无论是学习还是工作&#xff0c;电脑都是IT人必不可少的重要武器&#xff0c;一台好电脑除了自身配置要经得起考验&#xff0c;后期主人对它的维护也是决定它寿命的重要因素&#xff01; 其实这是个伪命题&#xff0c;就像穿衣一样&#xff0c;有的人喜欢干净整洁&#xff0c;…...

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…...

把笔记变成可生长的知识系统:Obsidian 技术介绍

Obsidian 不只是 Markdown 编辑器。它更像运行在本地文件之上的知识操作系统&#xff1a;用纯文本保存内容&#xff0c;用链接组织关系&#xff0c;用插件扩展能力&#xff0c;把经验沉淀为可检索、可复用、可迁移的长期资产。1. Obsidian 是什么 Obsidian 是一款以 Markdown 文…...

如何高效拆分CATIA多实体零件:pycatia自动化解决方案的完整指南

如何高效拆分CATIA多实体零件&#xff1a;pycatia自动化解决方案的完整指南 【免费下载链接】pycatia python module for CATIA V5 automation 项目地址: https://gitcode.com/gh_mirrors/py/pycatia 在CATIA三维设计领域&#xff0c;工程师们经常面临一个常见挑战&…...

社会工程学驱动的域名劫持攻击机理与防御体系研究 —— 以 CoW DAO 事件为例

摘要 2026 年 4 月 14 日&#xff0c;去中心化交易服务平台 CoW DAO 的官方域名 cow.fi 遭遇社会工程学攻击&#xff0c;攻击者通过入侵.fi 域名注册商流程、伪造身份材料并劫持 DNS 解析&#xff0c;将用户流量导向伪造钓鱼页面&#xff0c;诱导钱包签名导致资产损失约 120 万…...

UE5实战:从MediaPlayer到Media Texture,打通场景与UMG的视频播放全链路

1. 视频播放功能的基础准备 在UE5中实现视频播放功能&#xff0c;首先需要做好基础环境搭建。我强烈建议使用Electra Player插件&#xff0c;这是Epic官方推荐的视频解码方案&#xff0c;对DX12有良好支持。安装时只需在插件管理器中勾选"Electra Player"&#xff0…...

Claude推理接口低延迟优化秘技:FastAPI异步中间件+缓存穿透防护+请求批处理(仅限内部团队泄露版)

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;Claude推理接口低延迟优化秘技&#xff1a;FastAPI异步中间件缓存穿透防护请求批处理&#xff08;仅限内部团队泄露版&#xff09; 核心瓶颈定位 Claude官方API在高并发场景下常出现P99延迟飙升至1.2…...

usehooks-ts:React Hooks工具集,提升开发效率与代码质量

1. 项目概述&#xff1a;一个现代React Hooks的“瑞士军刀”如果你正在用React做项目&#xff0c;尤其是TypeScript项目&#xff0c;那么你大概率经历过这样的场景&#xff1a;为了一个简单的“防抖”功能&#xff0c;去网上搜一段代码&#xff0c;复制粘贴&#xff0c;然后发现…...

城通网盘直连解析工具:3分钟告别限速烦恼

城通网盘直连解析工具&#xff1a;3分钟告别限速烦恼 【免费下载链接】ctfileGet 获取城通网盘一次性直连地址 项目地址: https://gitcode.com/gh_mirrors/ct/ctfileGet 还在为城通网盘那令人抓狂的下载速度而苦恼吗&#xff1f;每次下载大文件都要面对漫长的等待倒计时…...

LinkedIn Liger Kernel:移动设备内核定制与性能优化实战

1. 项目概述&#xff1a;一个面向移动设备的开源内核探索如果你在移动设备开发、嵌入式系统或者内核研究的圈子里待过一段时间&#xff0c;大概率听说过或者接触过“Liger Kernel”这个名字。它不是一个商业产品&#xff0c;而是一个在GitHub上由LinkedIn开源并维护的Android内…...

Google Authenticator停更引发恐慌?自建TOTP动态口令系统其实没那么难,附技术实现方案

摘要&#xff1a;2023年&#xff0c;Google Authenticator推出账号同步功能&#xff0c;将TOTP密钥同步到Google账号云端&#xff0c;引发了安全社区的广泛争议——密钥上云意味着什么&#xff1f;企业级场景中&#xff0c;依赖第三方应用管理关键认证密钥本身就是隐患。本文讲…...

VMware macOS 虚拟机终极解锁指南:Unlocker 3.0 完整使用教程

VMware macOS 虚拟机终极解锁指南&#xff1a;Unlocker 3.0 完整使用教程 【免费下载链接】unlocker VMware Workstation macOS 项目地址: https://gitcode.com/gh_mirrors/unloc/unlocker 在虚拟化技术日益普及的今天&#xff0c;VMware Workstation 和 Player 用户经…...