redis两种持久化方式的优缺点是什么

技术redis两种持久化方式的优缺点是什么这篇文章给大家分享的是有关redis两种持久化方式的优缺点是什么的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。 redis

本文是关于redis的两种持久性方法的优缺点。我觉得边肖很实用,就和大家分享一下作为参考。让我们跟着边肖看一看。

Redis:坚持的两种方式

RDB持久性可以在指定的时间间隔内生成数据集的时间点快照。

AOF持久地记录服务器执行的所有写操作命令,当服务器启动时,通过重新执行这些命令来恢复数据集。所有的AOF文件都以redis协议的格式保存,新的命令将被附加到文件的末尾。redis还可以在后台重写AOF文件,文件大小不会超过保存数据集状态所需的实际大小。

Redis也可以同时使用AOF持久性和RDB持久性。在这种情况下,当redis重新启动时,它将使用AOF文件以有限的方式恢复数据集,因为AOF文件保存的数据集通常比RDB文件保存的数据集更完整。

RDB的优势

1.RDB是一个非常紧凑的文件,它保存了Redis在某个时间点的数据集。这种文件非常适合备份:例如,您可以在过去24小时内每小时备份一个RDB文件,也可以在每个月的每一天备份一个RDB文件。这样,即使遇到问题,也可以随时将数据集还原到不同的版本。

2.RDB非常适合灾难恢复:它只有一个文件,内容非常紧凑,所以可以传输到其他数据中心或亚马逊S3(加密后)。

3.RDB可以最大化Redis的性能:保存RDB文件时,父进程唯一要做的就是分叉出一个子进程,然后这个子进程将处理所有下一步的保存工作,而父进程不需要执行任何磁盘I/O操作。

4.RDB恢复大型数据集的速度比AOF快。

RDB的缺点

1.如果您需要尽量避免在服务器出现故障时丢失数据,那么RDB不适合您。虽然Redis允许您设置不同的保存点来控制保存RDB文件的频率,但这并不是一个容易的操作,因为RDB文件需要保存整个数据集的状态。因此,您可以至少每5分钟保存一次RDB文件。在这种情况下,如果停机,您可能会丢失几分钟的数据。

每次保存RDB时,Redis都必须分叉出一个子过程,这个子过程将执行实际的持久性工作。当数据集庞大时,fork()可能非常耗时,导致服务器在某毫秒内停止处理客户端;如果数据集很大,CPU时间很紧,停止时间甚至可能长达一整秒。虽然AOF重写也需要fork(),但无论AOF重写的执行间隔多长,都不会丢失数据持久性。

AOF的优势

使用AOF持久性将使Redis更加持久:您可以设置不同的fsync策略,如无fsync、每秒一次fsync或每次执行写命令时fsync。AOF的默认策略是每秒一次fsync。在这种配置下,Redis仍然可以保持良好的性能,即使发生宕机,最多也只会丢失一秒钟的数据(fsync将在后台线程中执行,因此主线程可以继续努力处理命令请求)。

AOF文件是一个仅附加的日志文件,因此不需要寻找来写入AOF文件。即使日志由于某些原因包含不完整的命令(如写入时磁盘已满、写入时停止等)。),redis-check-aof工具可以轻松解决这个问题。

当AOF文件的卷变得太大时,Redis可以在后台自动重写AOF:重写的新AOF文件包含恢复当前数据集所需的最小命令集。整个重写操作是绝对安全的,因为Redis在创建新的AOF文件的过程中会继续向现有的AOF文件追加命令,即使重写过程停止,现有的AOF文件也不会丢失。一旦创建了新的AOF文件,Redis将从旧的AOF文件切换到新的AOF文件,并开始追加新的AOF文件。

AOF文件将所有对数据库的写操作有序地保留下来,这些写操作是以Redis协议的格式存储的,所以AOF文件的内容非常容易被人们读取,也很容易解析文件。导出AOF文件也很简单:例如,如果您不小心执行了Flushal命令,但只要AOF文件没有被重写,只需停止服务器,删除AOF文件末尾的Flushal命令,然后重新启动Redis,将数据集恢复到Flushal执行之前的状态。

AOF的缺点

对于同一数据集,AOF文件的容量通常大于RDB文件。

根据fsync使用的策略,AOF可能比RDB慢。一般来说,每秒fs

ync 的性能依然非常高, 而关闭 fsync 可以让 AOF 的速度和 RDB 一样快, 即使在高负荷之下也是如此。 不过在处理巨大的写入载入时,RDB 可以提供更有保证的最大延迟时间(latency)。

AOF 在过去曾经发生过这样的 bug : 因为个别命令的原因,导致 AOF 文件在重新载入时,无法将数据集恢复成保存时的原样。 (举个例子,阻塞命令 BRPOPLPUSH 就曾经引起过这样的 bug 。) 测试套件里为这种情况添加了测试: 它们会自动生成随机的、复杂的数据集, 并通过重新载入这些数据来确保一切正常。 虽然这种 bug 在 AOF 文件中并不常见, 但是对比来说, RDB 几乎是不可能出现这种 bug 的.

感谢各位的阅读!关于“redis两种持久化方式的优缺点是什么”这篇文章就分享到这里了,希望

内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/107002.html

(0)

相关推荐

  • python+appium自动化测试-Android端环境配置

    技术python+appium自动化测试-Android端环境配置 python+appium自动化测试-Android端环境配置一、安装配置JDK
    一、安装环境
    1、本机系统:Windows 10(6

    礼包 2021年11月10日
  • Hadoop的基础知识点有哪些

    技术Hadoop的基础知识点有哪些本篇内容主要讲解“Hadoop的基础知识点有哪些”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Hadoop的基础知识点有哪些”吧!一、had

    攻略 2021年12月9日
  • 怎么理解Impala元数据

    技术怎么理解Impala元数据本篇文章给大家分享的是有关怎么理解Impala元数据,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。背景Impala是一个高性能

    攻略 2021年11月23日
  • RHEL7的基本命令有哪些呢

    技术RHEL7的基本命令有哪些呢今天就跟大家聊聊有关RHEL7的基本命令有哪些呢,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。本节单词整理:Termnial :

    攻略 2021年11月11日
  • 拉勾大前端高薪训练营全2021

    技术拉勾大前端高薪训练营全2021 拉勾大前端高薪训练营全2021(10).支持let与const在之前JS是没有块级作用域的,const与let填补了这方便的空白,const与let都是块级作用域。

    礼包 2021年11月1日
  • session中的增删改方法是什么(session两种实现方式)

    技术如何进行session和v$session说明这期内容当中小编将会给大家带来有关如何进行session和v$session说明,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。1、前言

    攻略 2021年12月17日