Redis中的两种持久化方式是什么

技术Redis中的两种持久化方式是什么本篇内容主要讲解“Redis中的两种持久化方式是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Redis中的两种持久化方式是什么”吧

本文主要讲解“Redis中坚持的两种方式是什么”,感兴趣的朋友不妨看看。本文介绍的方法简单、快速、实用。让边肖带你去学习“Redis中坚持的两种方式是什么?”!

Redis中的两种持久化方式是什么

Redis的两种持久化方式

众所周知,Redis为AOF和RDB提供了持久性,所以我们简单回顾一下。

RDB持久化

RDB执着,就是把当前时间点的数据库的状态保存到磁盘中,又称快照持久化.

RDB可以手动触发,也可以根据服务器配置定期执行。

RDB生成的文件是一个经过压缩的二进制文件,通过它数据库可以是还原到该时间点的状态.

Redis提供了一个前台RDB持久性命令SAVE和一个后台RDB持久性命令BGSAVE。前台执行时,Redis的其他命令会被阻塞,而后台执行时,Redis可以继续处理客户端的命令请求。

在RDB二进制文件中,存储了键值对的数据,并采用了压缩的自定义编码,并带有验证。它可以通过od命令转换成可读的。

在主从复制中,RDB文件用于初始完全复制。

【相关推荐:Redis视频教程】

AOF持久化

AOF持久性,全称是阿彭Only File,意思是一种附加的持久性模式,其中保存的是写命令而不是数据。

AOF持久性过程分为三个步骤:命令追加、文件写入和文件同步。

命令追加:每次Redis服务器执行写命令时,都会以aof协议格式将写命令追加到服务器状态的aof_buf缓冲区的末尾。

Write:在Redis中,在结束事件循环之前,将调用flushAppendOnlyFile函数将aof_buf缓冲区中的内容写入aof文件。

文件同步:同步同步是指文件写入操作系统缓冲区时是否直接同步到磁盘。通过配置,可以选择三种同步模式:立即同步、每秒同步、不主动同步由操作系统控制。文件输入输出缓冲:https://www.litreily.top/2018/10/25/io-cache/.

Redis优先使用AOF文件来恢复数据。

AOF文件比RDB文件大,因为它存储命令并且没有压缩。

BGREWRITEAOF可以定期重写AOF文件,以减少重复命令、无效命令、合并命令等。

AOF文件支持后台重写,并以fork子进程的形式实现。子进程拥有服务器进程数据的副本,不使用锁也能保证数据安全。此外,采用AOF重写缓冲区来解决数据不一致的问题。

两种持久化分别的优缺点

RDB的优点

文件很小,适合复制以备冷备用。

备份恢复比AOF快。

00-1010:许多数据丢失。

Fork子进程做BGSAVE,会消耗一些内存资源。

00-1010减少数据丢失。

添加写缓冲区,无需寻址,速度快。

只追加,也不需要做磁盘寻址,效率高。

00-1010档体积庞大。

每次aof需要写aof_buf的时候,QPS都会在AOF持久性开启后稍微降低。

00-1010经过以上的回顾,我们可以看到RDB明显不同于AOF的执着。

存储内容:RDB存储某一时间点的数据;AOF存储执行的写命令。

文件大小:RDB文件小;AOF档案很大。

写作模式:RDB可以采用前景/背景写作模式;AOF使用的方法是,每次执行写命令时,命令都存储在缓冲区中,并且可以定期重写。

数据丢失:从停机到最后一次RDB同步,RDB丢失了所有数据;根据输入/输出缓冲区配置的刷新模式,AOF在1秒或几秒内不会丢失或丢失数据。

根据这些比较,我们可以看到RDB持久化更适合保存一个时间点的数据,在主从复制或者数据全量异地灾备时,拷贝到其他地方AOF持久化由于丢失数据较少,比较适合作为本地备份,在Reids挂掉重启时作为故障恢复.这就是我所理解的,为什么Redis需要两种持久化方式.

至此,相信大家对“Redis中坚持的两种方式是什么”有了更深的理解,那么就来做一些实际的工作吧!这是网站。更多相关内容,可以进入相关渠道查询,关注我们,继续学习!

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

(0)

相关推荐

  • 缓冲区溢出实践

    技术缓冲区溢出实践 缓冲区溢出实践缓冲区溢出实践
    20191331lyx
    一、实验环境
    实验楼 https://www.lanqiao.cn/courses/231二、实验准备关闭内存地址空间随机化三、

    礼包 2021年11月1日
  • 如何深入理解Java虚拟机JVM类加载初始化

    技术如何深入理解Java虚拟机JVM类加载初始化如何深入理解Java虚拟机JVM类加载初始化,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。1

    2021年11月21日
  • react.js有什么特点

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

    攻略 2021年11月24日
  • toekn登陆身份验证流程

    技术toekn登陆身份验证流程 toekn登陆身份验证流程一、 token身份验证
    基于token验证时无状态[*]的,我们不能将信息存储到服务器中,因为当客户每次发起验证请求时,服务器需要去创建一个记

    礼包 2021年12月9日
  • innodb的基础(innodb使用技巧)

    技术InnoDB基础知识点有哪些这篇文章给大家分享的是有关InnoDB基础知识点有哪些的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。一、关于count(*)知识点:MyISAM会直接存储总行数

    攻略 2021年12月22日
  • C++实现WPF动画的具体操作方法

    技术C++实现WPF动画的具体操作方法本篇文章为大家展示了C++实现WPF动画的具体操作方法,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。C++编程语言的应方式非常广泛,可以帮助

    攻略 2021年10月27日