Redis持久化之RDB和AOF操作

本文涉及的产品
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
简介: 【1月更文挑战第9天】无论是面试还是工作,持久化都是重点!Redis是内存数据库,如果不将内存中的数据库状态保存到磁盘,那么一旦服务器进程退出,服务器中的数据库状态也会消失。所以Redis提供了持久化功能!——RDB(Redis DataBase)和AOF(Append Only File)

文章目录

前言

一、什么是RDB?

1.与持久化相关的一些配置

2.触发机制

3.如何恢复rdb文件

4.优点

5.缺点

二、什么是AOF?

1.重写规则说明

2.优点

3.缺点

总结


前言

无论是面试还是工作,持久化都是重点!

Redis是内存数据库,如果不将内存中的数据库状态保存到磁盘,那么一旦服务器进程退出,服务器中的数据库状态也会消失。所以Redis提供了持久化功能!——RDB(Redis DataBase)和AOF(Append Only File)


一、什么是RDB?

接下来请看一张便于理解的剖析图

图片解读:

  • 在指定的时间间隔内将内存中的数据集快照写入磁盘,也就是行话讲的Snapshot快照,它恢复时是将快照文件直接读到内存里
  • Redis会单独创建( fork )一个子进程来进行持久化 【Fork 的作用是复制一个与当前进程一样的进程。新进程的所有数据(变量,环境变量,程序计数器等)数值都和原进程一致。这是一个全新的进程,并作为原进程的子进程。】
  • 然后会先将数据写入到一个临时文件中,待持久化过程都结束了,再用这个临时文件替换上次持久化好的文件。
  • 整个过程中,主进程是不进行任何IO操作的。这就确保了极高的性能。
  • 如果需要进行大规模数据的恢复,且对于数据恢复的完整性不是非常敏感,那RDB方式要比AOF方式更加的高效。
  • RDB的缺点是最后一次持久化后的数据可能丢失
  • 在Redis中默认的就是RDB,一般情况下不需要修改这个配置!
  • rdb保存的文件是dump.rdb 都是在我们的配置文件中快照中进行配置的!

有时候在生产环境我们会将这个文件进行备份!

1.与持久化相关的一些配置

在我的上一篇博客中就提到了关于Redis.config配置文件中关于持久化的一些配置,详细请看博客Redis.config详解

2.触发机制

  • 1、save的规则满足的情况下,会自动触发rdb规则
  • 2、执行flushall命令,也会触发我们的rdb规则!
  • 3、退出redis,也会产生rdb文件!

备份就自动生成一个dump.rdb

3.如何恢复rdb文件

  • 1、只需要将rdb文件放在我们redis启动目录就可以,redis启动的时候会自动检查dump.rdb恢复其中的数据!
  • 2、查看需要存在的位置

4.优点

1、适合大规模的数据恢复!

2、对数据的完整性要不高!

5.缺点

1、需要一定的时间间隔进程操作!如果redis意外宕机了,这个最后一次修改数据就没有的了!

2、fork进程的时候,会占用一定的内容空间!!

二、什么是AOF?

接下来也请看一张便于理解的剖析图

图片解读:

  • 以日志的形式来记录每个写操作,
  • 将Redis执行过的所有指令记录下来(读操作不记录),
  • 只许追加文件但不可以改写文件,
  • redis启动之初会读取该文件重新构建数据,
  • 换言之,redis重启的话就根据日志文件的内容将写指令从前到后执行一次以完成数据的恢复工作

Aof保存的是appendonly.aof 文件

append

默认是不开启的,我们需要手动进行配置! 我们只需要将appendorly改为yes就开启了aof !

重启,redis就可以生效了!

如果这个aof文件有错位,这时候redis是启动不起来的吗,我们需要修复这个aof文件

redis给我们提供了一个工具redis-check-aof --fix

如果文件正常,重启就可以直接恢复了!

1.重写规则说明

如果aof文件大于64m,太大了! fork一个新的进程来将我们的文件进行重写!

2.优点

优点:

  • 1、每一次修改都同步,文件的完整会更加好!
  • 2、每秒同步一次,可能会丢失一秒的数据
  • 3、从不同步,效率最高的!

3.缺点

缺点:

  • 1、相对于数据文件来说,aof远远大于rdb,修复的速度也比 rdb慢!
  • 2、Aof运行效率也要比 rdb 慢,所以我们redis默认的配置就是rdb持久化! |

总结

以上就是Redis持久化之RDB和AOF操作,希望对你有所帮助。

相关实践学习
基于Redis实现在线游戏积分排行榜
本场景将介绍如何基于Redis数据库实现在线游戏中的游戏玩家积分排行榜功能。
云数据库 Redis 版使用教程
云数据库Redis版是兼容Redis协议标准的、提供持久化的内存数据库服务,基于高可靠双机热备架构及可无缝扩展的集群架构,满足高读写性能场景及容量需弹性变配的业务需求。 产品详情:https://www.aliyun.com/product/kvstore     ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库 ECS 实例和一台目标数据库 RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
相关文章
|
27天前
|
存储 NoSQL Redis
保障数据安全,提升性能:探秘Redis AOF持久化机制在在线购物网站的应用
保障数据安全,提升性能:探秘Redis AOF持久化机制在在线购物网站的应用
|
2天前
|
存储 NoSQL 算法
给我说说Redis持久化机制RDB吧
给我说说Redis持久化机制RDB吧
8 0
|
11天前
|
存储 NoSQL Java
Redis奔溃了快看看有没开启持久化
Reis作为一个内存数据库,整个数据库状态都存储在内存里,如果在运行过程中发生崩溃,那整个数据库状态可就完全不见了,相当于整个服务器被初始化。Redis在这方面肯定有所作为,我们来看看它做了什么功夫~
127 0
Redis奔溃了快看看有没开启持久化
|
22天前
|
存储 NoSQL 算法
redis数据持久化
redis数据持久化
|
2月前
|
缓存 NoSQL Shell
【Redis深度专题】「核心技术提升」探究Redis服务启动的过程机制的技术原理和流程分析的指南(持久化功能分析)
【Redis深度专题】「核心技术提升」探究Redis服务启动的过程机制的技术原理和流程分析的指南(持久化功能分析)
163 0
|
2月前
|
存储 NoSQL Java
Redis 数据结构操作入门
Redis 数据结构操作入门
15 0
|
2月前
|
缓存 NoSQL Redis
[Redis]——Redis持久化的两种方式RDB、AOF
[Redis]——Redis持久化的两种方式RDB、AOF
|
2月前
|
缓存 NoSQL 数据库
[Redis]——数据一致性,先操作数据库,还是先更新缓存?
[Redis]——数据一致性,先操作数据库,还是先更新缓存?
|
2月前
|
存储 NoSQL Redis
如何在Python中操作Redis数据库
如何在Python中操作Redis数据库
30 0
|
5月前
|
NoSQL Redis 数据库
【Redis】RDB和AOF
【Redis】RDB和AOF