Redis|持久化

news/2025/2/25 5:27:22

文章目录

    • 总体介绍
    • RDB(Redis DataBase)
      • 官网介绍
      • 案例演示
      • 优势
      • 劣势

总体介绍

  • 官网地址:https://redis.io/docs/manual/persistence/

在这里插入图片描述

  • 持久化双雄:
    • RDB(Redis DataBase)RDB 是 Redis 默认的持久化方式,它通过生成数据集的快照(snapshot)来保存数据。RDB 文件是一个经过压缩的二进制文件,包含了某个时间点 Redis 数据库中的所有数据。
    • AOF(Append-Only File)AOF 持久化通过记录每个写操作来保存数据。AOF 文件是一个追加写入的日志文件,记录了 Redis 执行的所有写命令。在 Redis 重启时,可以通过重新执行 AOF 文件中的命令来恢复数据。

在这里插入图片描述

RDBRedis_DataBase_12">RDB(Redis DataBase)

官网介绍

在这里插入图片描述

  • 在指定的时间间隔,执行数据集的时间点快照。
  • 实现类似照片记录效果的方式,就是把某一时刻的数据和状态以文件的形式写到磁盘上,也就是快照。这样一来即使故障宕机,快照文件也不会丢失,数据的可靠性也就得到了保证。
  • 这个快照文件就称为 RDB 文件(dump.rdb),其中,RDB 就是 Redis DataBase 的缩写。
  • 在指定的时间间隔内将内存中的数据集快照写入磁盘,也就是行话讲的 snapshot 内存快照,它恢复时再将硬盘快照文件直接读回到内存里。
  • Redis 的数据都在内存中,保存备份时它执行的是全量快照,也就是说,把内存中的所有数据都记录到磁盘中,一锅端。
  • RDB 保存的是 dump.rdb 文件。

案例演示

在这里插入图片描述

  • RDB 保存到磁盘的文件叫 dump.rdb

  • Redis 6.0.16 及以下:

在这里插入图片描述

在这里插入图片描述

  • Redis 6.2 以及 Redis 7.0.0:

在这里插入图片描述

  • 操作步骤:
    在这里插入图片描述
  • 自动触发
  • Redis7 版本,按照 redis.conf 里配置的 save <seconds> <changes>
  • 本次案例5秒2次修改,save 5 2 的意思是,如果在 5 秒内发生了 2 次写操作(如 SET 或 DEL),则会触发 RDB 保存。在 5 秒内发生至少 2 次修改,就会触发保存快照。如果在 5 秒内发生了 3 次修改,它满足了这个条件,因此快照会被保存。即使超过了 2 次修改,只要满足时间窗口和修改次数的条件(这里是 5 秒内 2 次修改),快照就会触发。

在这里插入图片描述

  • 修改 dump.rdb 文件的保存路径

在这里插入图片描述

  • 修改 dump.rdb 文件名称

在这里插入图片描述

  • 触发备份
  • 第一种情况,5 秒内保存 2 次

在这里插入图片描述

  • 第二种情况,两次保存间隔超过5秒

在这里插入图片描述

  • Redis 启动或者 RDB 快照完成,开始计时,期间 Redis 会记录发生写操作的次数。超过了 <seconds> 后,Redis 会统计这段时间里达到修改次数,满足 <changes> 次,会自动触发,每个时间间隔内只会触发一次

  • 我看推测配置文件注释描述的应该是距离上次更新超过了 <seconds> 后,Redis 会统计这段时间里达到修改次数,如果满足 <changes> 次数,会自动触发

  • 如何恢复:

    • 将备份文件(dump.rdb)移动到 Redis 安装目录并启动服务即可
    • shutdown 命令模拟服务器宕机时,最后那次关机 redis 马上会把当前的快照保存一次,保证跟上一次一致,尽量使其最新
    • 备份成功后故意用 flushdb 清空 redis,看看是否可以恢复数据?执行 flushall/flushdb 命令也会产生 dump.rdb 文件,但里面是空的,无意义
    • 物理恢复,一定要将服务产生的有数据的 RDB 文件备份一份,然后分机隔离,避免生产上物理损坏后备份文件也挂了
  • 手动触发

优势

劣势


http://www.niftyadmin.cn/n/5865006.html

相关文章

C++面向对象编程技术研究

一、引言 面向对象编程&#xff08;OOP&#xff09;是一种程序设计方法&#xff0c;它将现实世界中的实体抽象为“对象”&#xff0c;并通过类和对象来实现程序的设计。OOP的核心思想包括封装、继承和多态&#xff0c;这些特性使得程序更加模块化、易于扩展和维护。C作为一种支…

在 M1 Mac 上解锁 TensorFlow GPU 加速:从环境搭建到实战验证

在 M1 Mac 上解锁 TensorFlow GPU 加速&#xff1a;从环境搭建到实战验证 前言&#xff1a;苹果芯片的深度学习新纪元 随着 Apple Silicon 芯片的普及&#xff0c;M1/M2/M3 系列 Mac 已成为移动端深度学习开发的新选择。本文将以 TensorFlow 2.x 为例&#xff0c;手把手教你如…

初步学习java 动态代理

前言 在学习 动态代理知识之前&#xff0c;可以先了解 反射 反射的复习-CSDN博客 场景 我们知道&#xff0c;一些大明星开演出会&#xff0c;要收门票&#xff0c;准备场景啥的。但很显然 明星&#xff0c;他们主要还是 唱歌&#xff0c;跳舞&#xff0c;和粉丝互动。那么 其…

电脑经常绿屏(蓝屏)怎么办(解决方法)?

一、排查系统与驱动问题 进入安全模式修复系统 强制重启电脑 3 次触发恢复环境&#xff0c;选择 疑难解答 > 高级选项 > 启动设置 > 重启&#xff0c;按 F5 或 5 进入带网络连接的安全模式3。 在安全模式下&#xff0c;尝试卸载最近安装的软件或更新&#xff0c;尤其…

Spring Cloud之注册中心之Nacos的安装

​​​​​​​ 目录 Nacos 简介 Nacos安装 Windows 修改单机模式 启动Nacos ​编辑常见问题 集群模式启动 端口号冲突 Linux 准备安装包 单机模式启动 开放端口号 启动并访问 Nacos 简介 2018年6⽉, Eureka 2.0宣布闭源(但是1.X版本仍然为活跃项⽬), 同年7⽉份…

本地Oracle数据库复制数据到Apache Hive的Linux服务器集群的分步流程

我们已经有安装Apache Hive的Linux服务器集群&#xff0c;它可以连接到一个Oracle RDS数据库&#xff0c;需要在该Linux服务器上安装配置sqoop&#xff0c;然后将Oracle RDS数据库中所有的表数据复制到Hive。 为了将本地Oracle数据库中的所有表数据复制到Apache Hive Linux服务…

Go语言设计模式之迭代器模式Iterator

迭代器模式 Iterator 提供了一种方法顺序访问一个聚合对象中的各个元素&#xff0c;而又不需要暴露该对象的内部表示。迭代器模式的核心思想是将遍历逻辑从聚合对象中分离出来&#xff0c;使得聚合对象和遍历逻辑可以独立变化。 实际应用场景 集合类库&#xff1a; 如 Go 的…

Sui链开发:技术架构与生态实践深度解析(2025年最新进展)

一、Sui链的核心技术架构 1. 并行执行与对象模型 ui采用对象导向模型&#xff0c;将链上资产&#xff08;如NFT、代币&#xff09;视为独立对象&#xff0c;通过并行处理机制实现高吞吐量。每个对象的交易可独立验证&#xff0c;无需全局共识&#xff0c;显著提升处理效率&…