003.图解分析 redis 的 RDB 和 AOF 两种持久化机制的工作原理

目录

  • RDB
  • AOF
  • 小结
  • 参考

我们已经知道对于一个企业级的 redis 架构来说,持久化是不可减少的

tip
牢记企业级 redis 集群架构是用来支撑海量数据、高并发、高可用
持久化主要是做灾难恢复、数据恢复,也可以归类到高可用的一个环节里面去

比如你 redis 整个挂了,redis 就不可用了,你要做的事情是让 redis 变得可用,尽快变得可用你会怎么做?

你会重启 redis,尽快让它对外提供服务,但是就像上一讲说,如果你没做数据备份,这个时候 redis 就算启动了,也不可用,数据没有了,如果这个时候大量的请求过来,缓存全部无法命中,在 redis 里根本找不到数据,这个时候就死定了,缓存雪崩(后面会讲解)问题,所有请求没有在 redis 命中,就会去 mysql 数据库这种数据源头中去找,一下子 mysql 承接高并发,然后就挂了

mysql 挂掉,你都没法去找数据恢复到 redis 里面去,redis 的数据从哪儿来?从 mysql 来,所以这个事情在大型互联网项目中是恐怖的

具体的完整的缓存雪崩的场景,还有企业级的解决方案,到后面讲

如果你把 redis 的持久化做好,备份和恢复方案做到企业级的程度,那么即使你的 redis 故障了,也可以通过备份数据,快速恢复,一旦恢复立即对外提供服务

redis 的持久化跟高可用是有关系的,放在企业级 redis 架构中去讲解

redis 持久化的两种机制:RDB,AOF

RDB

对 redis 中的数据执行周期性的持久化,如下图

AOF

每条写入命令作为日志,写入 aof 文件中

为了保证性能,会先写入 os cache 中,然后定期强制执行 fsync 操作将数据刷入磁盘

它的原理:

  • 因为每台单机 redis 的数据量是受内存限制的,所以 aof 文件不会无限增长
  • 且当数据超过内存限制的时候,会自动使用 LRU 算法将一部分数据淘汰掉
  • AOF 存放的是每条写入命令,所以会不断膨胀,当达到一定时候,会做 rewrite 操作
  • rewrite 操作:基于当时 redis 内存中的数据,重新构造一个更小的 aof 文件,然后删除旧的 aof 文件

如上图,总结一下: aof 不断被追加,内存中数据有最大限制会自动淘汰,当 aof 中的数据大于内存中数据时,就会执行 rewrite 操作,生成新的 aof 文件

AOF 机制对每条写入命令作为日志,以 append-only 的模式写入一个日志文件中,在 redis 重启的时候,可以通过回放 AOF 日志中的写入指令来重新构建整个数据集

小结

通过 RDB 或 AOF,都可以将 redis 内存中的数据给持久化到磁盘上面来,然后可以将这些数据备份到别的地方去,比如说阿里云,云服务

如果 redis 挂了,服务器上的内存和磁盘上的数据都丢了,可以从云服务上拷贝回来之前的数据,放到指定的目录中,然后重新启动 redis,redis 就会自动根据持久化数据文件中的数据,去恢复内存中的数据,继续对外提供服务

如果同时使用 RDB 和 AOF 两种持久化机制,那么在 redis 重启的时候,会使用 AOF 来重新构建数据,因为 AOF 中的数据更加完整

参考

-中华石杉:亿级流量电商详情页系统实战(第二版):缓存架构+高可用服务架构+微服务架构
-Mrcode笔记本

原文地址:https://www.cnblogs.com/codecheng99/p/12382182.html

时间: 2024-10-10 13:31:31

003.图解分析 redis 的 RDB 和 AOF 两种持久化机制的工作原理的相关文章

004.redis 的 RDB 和 AOF 两种持久化机制的优劣势对比

目录 RDB 持久化机制的优点 RDB 持久化机制的缺点 AOF 持久化机制的优点 AOF 持久化机制的缺点 RDB 和 AOF 到底该如何选择 参考 RDB 持久化机制的优点 适合做冷备 RDB 会生成多个数据文件,每个数据文件都代表了某一个时刻中 redis 的数据,这种多个数据文件的方式,非常适合做冷备,可以将这种完整的数据文件发送到一些远程的安全存储上去,如云上,以预定好的备份策略来定期备份 redis 中的数据 性能影响小 能让 redis 对外提供的读写服务不受影响,因为 redis

Redis系列之----Redis的两种持久化机制(RDB和AOF)

Redis的两种持久化机制(RDB和AOF) 什么是持久化 ???Redis的数据是存储在内存中的,内存中的数据随着服务器的重启或者宕机便会不复存在,在生产环境,服务器宕机更是屡见不鲜,所以,我们希望Redis能够将数据从内存中以某种形式保存到磁盘中,使得重启的时候可以加载磁盘中的文件记录恢复数据,这一过程便是Redis的持久化. ???Redis支持两种持久化机制,一种是RDB,另一种是AOF.Redis默认情况下使用RDB方式进行持久化.两种持久化可以单独使用其中的一种,也可以二者结合使用,

Redis RDB、 AOF 两种机制

二.RDB机制的优势和劣势: RDB存在哪些优势呢? 1). 一旦采用该方式,那么你的整个Redis数据库将只包含一个文件,这对于文件备份而言是非常完美的.比如,你可能打算每个小时归档一次最近24小时的数据,同时还要每天归档一次最近30天的数据.通过这样的备份策略,一旦系统出现灾难性故障,我们可以非常容易的进行恢复. 2). 对于灾难恢复而言,RDB是非常不错的选择.因为我们可以非常轻松的将一个单独的文件压缩后再转移到其它存储介质上. 3). 性能最大化.对于Redis的服务进程而言,在开始持久

redis的两种持久化机制

---恢复内容开始--- RDB:在指定的时间间隔对redis中的数据进行快照存储,默认开启 AOF:记录每次操作redis的命令,将命令写入到AOF文件中,当重启redis时会重新执行这些命令来恢复数据,默认关闭. RDB方式: Redis会根据redis.conf配置文件定期将数据快照至一个RDB文件中: save [seconds] [changes]:意为每seconds秒内如果数据有changes次修改,那么就进行一次rdb快照存储.可配置多条save指令,让redis执行多级的快照保

Redis的两种持久化操作RDB-AOF

Redis支持RDB和AOF两种持久化机制,持久化功能有效地避免因进程退出造成的数据丢失问题,当下次重启时利用之前持久化文件即可实现数据恢复. RDB是什么 RDB持久化是把当前进程数据生成快照保存到硬盘的过程,触发RDB持久化过程分为**手动触发**和**自动触发**. 1.1.1 触发机制 手动触发分别对应save和bgsave命令: save命令:阻塞当前Redis服务器,知道RDB过程完成为止,对于内存比较大的实例会造成长时间阻塞,先上环境不建议使用.运行save命令对应Redis日志如

Redis两种持久化方式(RDB&AOF)

爬虫和转载请注明原文地址;博客园蜗牛:http://www.cnblogs.com/tdws/p/5754706.html Redis所需内存 超过可用内存怎么办 Redis修改数据多线程并发—Redis并发锁 windows下redis基础操作与主从复制 从而 数据备份和读写分离 Redis两种持久化方式(RDB&AOF) Redis的持久化过程中并不需要我们开发人员过多的参与,我们要做的是什么呢?除了深入了解RDB和AOF的作用原理,剩下的就是根据实际情况来制定合适的策略了,再复杂一点,也就

redis的 rdb 和 aof 持久化的区别 [转]

aof,rdb是两种 redis持久化的机制.用于crash后,redis的恢复. rdb的特性如下: Code: fork一个进程,遍历hash table,利用copy on write,把整个db dump保存下来.save, shutdown, slave 命令会触发这个操作.粒度比较大,如果save, shutdown, slave 之前crash了,则中间的操作没办法恢复. aof有如下特性: Code: 把写操作指令,持续的写到一个类似日志文件里.(类似于从postgresql等数

Redis的RDB和AOF

1.数据快照RDB 1.1原理 (1)RDB是将某一时刻的数据持久化到磁盘中,是一种快照的方式. (2)redis在进行数据持久化的过程中,会先将数据写入到一个临时文件中,待持久化过程都结束了,才会用这个临时文件替换上次持久化好的文件.正是这种特性,让我们可以随时来进行备份,及时redis处于运行状态: (3)对于RDB方式,redis会单独创建(fork)一个子进程来进行持久化,而主进程是不会进行任何IO操作的,这样就确保了redis极高的性能. (4)如果需要进行大规模数据的恢复,且对于数据

redis的rdb与aof持久化机制

Redis提供了两种持久化方案:RDB持久化和AOF持久化,一个是快照的方式,一个是类似日志追加的方式 RDB快照持久化 RDB持久化是通过快照的方式,即在指定的时间间隔内将内存中的数据集快照写入磁盘.在创建快照之后,用户可以备份该快照,可以将快照复制到其他服务器以创建相同数据的服务器副本,或者在重启服务器后恢复数据.RDB是Redis默认的持久化方式 save 900 1 当时间到900秒时,如果至少有1个key发生变化,就会自动触发bgsave命令创建快照 save 300 10 当时间到3