本文主要讲解“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