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)

相关推荐

  • nginx.pid打开失败怎么办

    技术nginx.pid打开失败怎么办本篇内容介绍了“nginx.pid打开失败怎么办”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够

    攻略 2021年12月11日
  • Pycharm怎么安装PyQt5

    技术Pycharm怎么安装PyQt5本篇内容主要讲解“Pycharm怎么安装PyQt5”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Pycharm怎么安装PyQt5”吧!1.

    攻略 2021年12月8日
  • centos7 安装openGauss极简版本

    技术centos7 安装openGauss极简版本 centos7 安装openGauss极简版本1 基础环境准备:
    系统:
    [root@bogon ~]# cat /etc/redhat-releas

    礼包 2021年12月15日
  • oracle删除所有dblink(oracle dblink删除报错)

    技术Oracle中删除database link时报错怎么办本篇内容主要讲解“Oracle中删除database link时报错怎么办”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家

    攻略 2021年12月22日
  • TP中怎么按照周来实现将数据分类

    技术TP中怎么按照周来实现将数据分类本篇内容主要讲解“TP中怎么按照周来实现将数据分类”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“TP中怎么按照周来实现将数据分类”吧!具体

    攻略 2021年12月4日
  • Does RSA Private key always contain the Public key, or is it just .NET

    技术Does RSA Private key always contain the Public key, or is it just .NET Does RSA Private key always

    礼包 2021年12月9日