Redis|持久化

文章目录

总体介绍

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

RDB(Redis DataBase)

官网介绍

  • RDB (Redis 数据库):RDB 持久化以指定的时间间隔执行数据集的时间点快照。
  • 在指定的时间间隔,执行数据集的时间点快照。
  • 实现类似照片记录效果的方式,就是把某一时刻的数据和状态以文件的形式写到磁盘上,也就是快照。这样一来即使故障宕机,快照文件也不会丢失,数据的可靠性也就得到了保证。
  • 这个快照文件就称为 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 文件备份一份,然后分机隔离,避免生产上物理损坏后备份文件也挂了
  • 手动触发

优势

劣势

相关推荐
我码玄黄1 小时前
Redis多线程技术助力向量数据库性能飞跃
数据库·redis·缓存
Kendra9193 小时前
数据库(MySQL)二
数据库·mysql
筑梦之路3 小时前
MariaDB 历史版本下载地址 —— 筑梦之路
数据库·mariadb
前端小王hs4 小时前
MySQL后端返回给前端的时间变了(时区问题)
前端·数据库·mysql
千篇不一律4 小时前
工作项目速刷手册
服务器·前端·数据库
刘小炮吖i4 小时前
数据库面试题(基础常考!!!)
数据库·mysql·面试
web147862107234 小时前
数据库系统架构与DBMS功能探微:现代信息时代数据管理的关键
java·开发语言·数据库
wolf犭良4 小时前
21.《SpringBoot 异步编程@Async与CompletableFuture》
java·数据库·spring
️Carrie️4 小时前
6.6.2 SQL数据定义
数据库·sql·表创建·索引创建·视图创建·sql数据定义