【5分钟背八股】redis长期化RDB和AOF?

藏宝库编辑 2024-9-15 10:41:50 119 0 来自 中国
Redis 长期化

Redis 提供了差别级别的长期化方式:

  • RDB长期化方式可以或许在指定的时间隔断能对你的数据举行快照存储.
  • AOF长期化方式记载每次对服务器写的操纵,当服务器重启的时候会重新执行这些下令来规复原始的数据,AOF下令以redis协议追加生存每次写的操纵到文件末了.Redis还能对AOF文件举行后台重写,使得AOF文件的体积不至于过大.
  • 如果你只盼望你的数据在服务器运行的时候存在,你也可以倒霉用任何长期化方式.
  • 你也可以同时开启两种长期化方式, 在这种环境下, 当redis重启的时候会优先载入AOF文件来规复原始的数据,由于在通常环境下AOF文件生存的数据集要比RDB文件生存的数据集要完整.
  • 最告急的事变是相识RDB和AOF长期化方式的差别,让我们以RDB长期化方式开始:
    RDB的优点
  • RDB是一个非常紧凑的文件,它生存了某个时间点得数据集,非常实用于数据集的备份,比如你可以在每个小时报生存一下已往24小时内的数据,同时天天生存已往30天的数据,如许纵然出了题目你也可以根据需求规复到差别版本的数据集.
  • RDB是一个紧凑的单一文件,很方便传送到另一个远端数据中央大概亚马逊的S3(大概加密),非常实用于灾难规复.
  • RDB在生存RDB文件时父进程唯一须要做的就是fork出一个子进程,接下来的工作全部由子进程来做,父进程不须要再做其他IO操纵,以是RDB长期化方式可以最大化redis的性能.
  • 与AOF相比,在规复大的数据集的时候,RDB方式会更快一些.
    RDB的缺点
  • 如果你盼望在redis不测克制工作(比方电源停止)的环境下丢失的数据最少的话,那么RDB不得当你.虽然你可以设置差别的save时间点(比方每隔5分钟而且对数据集有100个写的操纵),是Redis要完整的生存整个数据集是一个比力繁重的工作,你通常会每隔5分钟大概更久做一次完整的生存,万一在Redis不测宕机,你大概会丢失几分钟的数据.
  • RDB 须要常常fork子进程来生存数据集到硬盘上,当数据集比力大的时候,fork的过程好坏常耗时的,大概会导致Redis在一些毫秒级内不能相应客户端的哀求.如果数据集巨大而且CPU性能不是很好的环境下,这种环境会连续1秒,AOF也须要fork,但是你可以调治重写日志文件的频率来进步数据集的耐久度.
    AOF 优点
  • 利用AOF 会让你的Redis更加耐久: 你可以利用差别的fsync战略:无fsync,每秒fsync,每次写的时候fsync.利用默认的每秒fsync战略,Redis的性能依然很好(fsync是由后台线程举行处理的,主线程会努力处理客户端哀求),一旦出现故障,你最多丢失1秒的数据.
  • AOF文件是一个只举行追加的日志文件,以是不须要写入seek,纵然由于某些缘故起因(磁盘空间已满,写的过程中宕机等等)未执行完整的写入下令,你也也可利用redis-check-aof工具修复这些题目.
  • Redis 可以在 AOF 文件体积变得过大时,主动地在后台对 AOF 举行重写: 重写后的新 AOF 文件包罗了规复当前数据集所需的最小下令聚集。 整个重写操纵是绝对安全的,由于 Redis 在创建新 AOF 文件的过程中,会继续将下令追加到现有的 AOF 文件内里,纵然重写过程中发生停机,现有的 AOF 文件也不会丢失。 而一旦新 AOF 文件创建完毕,Redis 就会从旧 AOF 文件切换到新 AOF 文件,并开始对新 AOF 文件举行追加操纵。
  • AOF 文件有序地生存了对数据库执行的全部写入操纵, 这些写入操纵以 Redis 协议的格式生存, 因此 AOF 文件的内容非常轻易被人读懂, 对文件举行分析(parse)也很轻松。 导出(export) AOF 文件也非常简单: 举个例子, 如果你不鉴戒执行了 FLUSHALL 下令, 但只要 AOF 文件未被重写, 那么只要克制服务器, 移除 AOF 文件末了的 FLUSHALL 下令, 并重启 Redis , 就可以将数据集规复到 FLUSHALL 执行之前的状态。
    AOF 缺点
  • 对于雷同的数据集来说,AOF 文件的体积通常要大于 RDB 文件的体积。
  • 根据所利用的 fsync 战略,AOF 的速率大概会慢于 RDB 。 在一样寻常环境下, 每秒 fsync 的性能依然非常高, 而关闭 fsync 可以让 AOF 的速率和 RDB 一样快, 纵然在高负荷之下也是云云。 不外在处理巨大的写入载入时,RDB 可以提供更有包管的最大耽误时间(latency)。
    4.X版本的整合战略

    在AOF重写战略上做了优化。
    在重写AOF文件时,4.x版本从前是把内存数据集的操纵指令落地,而新版本是把内存的数据集以rdb的情势落地。
    如许重写后的AOF依然追加的是日志,但是,在规复的时候是先rdb再增量的日志,性能更精良。
保举学习【5分钟背八股】redis主从复制的原理?
您需要登录后才可以回帖 登录 | 立即注册

Powered by CangBaoKu v1.0 小黑屋藏宝库It社区( 冀ICP备14008649号 )

GMT+8, 2024-11-22 16:16, Processed in 0.148382 second(s), 32 queries.© 2003-2025 cbk Team.

快速回复 返回顶部 返回列表