前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Redis-持久化(RDB和AOF)

Redis-持久化(RDB和AOF)

作者头像
唔仄lo咚锵
发布2020-09-15 15:09:19
3390
发布2020-09-15 15:09:19
举报

文章目录

  • RDB
    • 配置
    • 测试
  • AOF
    • 配置
    • 修复
  • 如何选择

Redis是内存数据库,所以一旦断电或服务器进程退出,都会丢失数据,所以Redis提供了持久化功能。

RDB


RDB(Redis DataBase)Redis默认数据库,快照。 在指定间隔时间内将内存中的数据集快照写入磁盘,即Snapshot快照,恢复数据时直接将快照文件读到内存。 工作原理 当 Redis 需要保存 dump.rdb 文件时, 服务器执行以下操作:

  • Redis 调用forks. 同时拥有父进程和子进程。
  • 子进程将数据集写入到一个临时 RDB 文件中。
  • 当子进程完成对新 RDB 文件的写入时,Redis 用新 RDB 文件替换原来的 RDB 文件,并删除旧的 RDB 文件。

触发RDB保存

  • 满足save规则(可配置)
  • 执行flushall命令后会触发
  • 退出redis也会产生rdb文件

优缺点

优点

缺点

适合大规模数据恢复

fork进程时会占内存

适合数据完整性要求不高

需要一定时间间隔触发,可能丢失最后一次修改数据

配置

默认即可

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

测试

在这里插入图片描述
在这里插入图片描述

AOF


AOF(Append Only File)只追加操作的文件。 以日志形式记录每个写操作指令,只追加文件不改写文件,Redis启动时读取该文件来重构数据,即依次执行写指令。 工作原理 AOF 重写和 RDB 创建快照一样,都巧妙地利用了写时复制机制:

  • Redis 执行 fork() ,现在同时拥有父进程和子进程。
  • 子进程开始将新 AOF 文件的内容写入到临时文件。
  • 对于所有新执行的写入命令,父进程一边将它们累积到一个内存缓存中,一边将这些改动追加到现有 AOF 文件的末尾,这样样即使在重写的中途发生停机,现有的 AOF 文件也还是安全的。
  • 当子进程完成重写工作时,它给父进程发送一个信号,父进程在接收到信号之后,将内存缓存中的所有数据追加到新 AOF 文件的末尾。
  • 搞定!现在 Redis 原子地用新文件替换旧文件,之后所有命令都会直接追加到新 AOF 文件的末尾。

优缺点

优点

缺点

更好保证数据完整性

恢复数据速度慢

aof文件可以读懂

运行效率也比rgb慢

配置

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

修复

持久化测试和RGB大同小异,删除aof文件后数据丢失。说一下AOF文件修复: 修改配置开启AOF,进行若干写操作:

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

然后再次连接redis客户端,报错拒绝连接:

在这里插入图片描述
在这里插入图片描述

启动修复

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

眼尖的人儿发现了rdb也有redis-check-rdb,然而rdb文件我们是看不懂的,你可以自己试试(偷懒 )

在这里插入图片描述
在这里插入图片描述

如何选择


其实就用官方默认RDB就好了。 引用官网:

在这里插入图片描述
在这里插入图片描述

原创不易,请勿转载本不富裕的访问量雪上加霜 ) 博主首页:https://blog.csdn.net/qq_45034708

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020-08-20 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 文章目录
  • RDB
    • 配置
      • 测试
      • AOF
        • 配置
          • 修复
          • 如何选择
          相关产品与服务
          云数据库 Redis
          腾讯云数据库 Redis(TencentDB for Redis)是腾讯云打造的兼容 Redis 协议的缓存和存储服务。丰富的数据结构能帮助您完成不同类型的业务场景开发。支持主从热备,提供自动容灾切换、数据备份、故障迁移、实例监控、在线扩容、数据回档等全套的数据库服务。
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档