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 文件备份一份,然后分机隔离,避免生产上物理损坏后备份文件也挂了
  • 手动触发

优势

劣势

相关推荐
南風_入弦6 分钟前
Oracle logminer详解
数据库·oracle·恢复
小安同学iter1 小时前
SpringBoot (二) 日志系统
数据库·spring boot·后端
Chandler241 小时前
Redis:事务
数据库·redis·缓存
是阿建吖!2 小时前
【MySQL】事务
数据库·mysql
Asuka073 小时前
MySQL数据库和表的操作
数据库·mysql
MasterNeverDown3 小时前
Docker Desktop 安装 Redis:轻松搭建本地缓存服务
redis·缓存·docker
天上掉下来个程小白3 小时前
Redis-04.Redis常用命令-字符串常用命令
java·数据库·redis·springboot·苍穹外卖
2401_891409263 小时前
国外期货高频数据:历史高频分钟回测数据分享
数据库·金融
喻师傅3 小时前
横扫SQL面试——用户留存率问题
数据库·sql·面试
暗恋 懒羊羊3 小时前
【MySQL】表的操作
数据库·mysql