Redis持久化操作RDB和AOF 对比于HDFS的SecondaryNode
写在前面的话
最近学习比较多流行的大数据框架和完成两个大数据项目后,又突然学起了Redis。之所以之前的框架不学习记录呢,是因为之前的学习都是为了完成参加服创比赛的项目所以时间较紧,现在基本架构和编码测试完成,就开始学习新的知识并且尝试优化服创项目。当然我也不愿意复制老师的PPT写成自己的博客:),这里记录的是我在学习过程中自己的一些思考和之前大数据框架(AOF、RDB与HDFS中的SecondaryNode)的对比(大数据人绝不CV。
PS:服创项目是我从0开始的项目,等服创比赛结束后再来复盘!
Redis
Redis,REmote DIctionary Server(远程字典服务器),作为内存数据库, 同时作为NoSQL的一员,与传统的RDBMS区别还是挺大的(我最大的感觉就是简单和快速。
(读到这里那一定会有读者问了:)作为数据库,那么一定能存储数据,但是又是运行在内存中的,那怎么才能保证数据不丢失呢!(即持久化)
那便是持久化!并且有两种方式可以进行持久化,分别是RDB(Redis DataBase)和AOF(Append Only File)。笔者在学习过程中,总是脑海中不断与HDFS的SecondaryNode的备份方式进行比较,故此文作为记录!
下图是Namenode和SecondaryNode的工作流程图:

RDB -Redis DataBase
RDB持久化
Redis运行过程中,达到了一定时间点或者其他限制(比如手动刷写),启动一个子进程fork整个主进程,在子进程中将redis中的数据写入到一个临时文件中,等这个持久化过程结束后,将这个临时文件替换上次持久化的文件。
笔者在初次接触到这个理念的时候,立马就觉得这个很有可能会丢失最近一次的持久化,这不就是冷备份嘛!那secondaryNode不也是冷备份嘛。重点就在于RDB保存的是数据文件(默认为dump.rdb),就像是secondary保存的FsImage.checkpoint一样,类似于数据库中的物理备份。
下图是RDB的流程图:

配置
Redis的配置文件中就可以配置出发RDB的工作的条件:
| 名称 | 内容 |
|---|---|
| save | 配置快照出发的条件,例如save 120 2,表示在两分钟内修改了2次触发RDB,save ""表示关闭RDB。 |
| stop-writes-on-bgsave-error | 如果配置成no,表示你不在乎数据不一致或者有其他的手段发现和控制 |
| rdbcompression | 是否对于存储的数据文件进行压缩,当然这需要消耗额外的CPU资源 |
| rdbchecksum | 是否对于存储的文件使用CRC64算法进行校验 |
| dbfilename | 存储的RDB数据文件名称,默认为dump.rdb |
| dir | 工作路径 |
优劣势
优势:适合大规模的数据恢复;对数据完整性和一致性要求不高
劣势:在一定间隔时间做一次备份,所以如果redis意外down掉的话,就会丢失最后一次快照后的所有修改;fork的时候,内存中的数据被克隆了一份,大致2倍的膨胀性需要考虑;同时子进程写入的时候是不可以主进程不能进行任何的IO操作
AOF-Append Only File
AOF持久化
相比于RDB的持久化,AOF采取就是将每次写入操作写入日志,在每次恢复的时候重新执行一次日志文件中的写入操作就可以了。
这里是不是很容易就联想到NameNode的edit日志,NameNode如果不走SecondaryNode的话,执行的也是将操作保存在文件中,而不是数据文件,这里就类似于数据库的逻辑备份。
下图是AOF持久化的流程图:

配置
| 名称 | 内容 |
|---|---|
| appendfsync | 同步的机制,Always表示实时同步,everysec表示每秒同步,no表示不同步 |
| no-appendfsync-on-rewrite | 重写时是否可以运用Appendfsync,用默认no即可,保证数据安全性。 |
| auto-aof-rewrite-min-size | 设置重写的基准值 |
| auto-aof-rewrite-percentage | 设置重写的基准值百分比 |
优劣势
优势:相比于RDB,一致性较好。
劣势:相同数据集的数据而言aof文件要远大于rdb文件,恢复速度慢于rdb;aof运行效率要慢于rdb,每秒同步策略效率较好,不同步效率和rdb相同
总结
这么对比下来,HDFS中采用的方法归根结底还是冷备份。如果HDFS只用RDB的方式,NN的压力太大,如果只用AOF的方式,效率太低,所以两者结合才是最好的方式,而这种方式对于Redis来说又过于重量级了。HDFS还将将备份文件放置在了另一台机器上,当然,Redis也可以做到,毕竟Redis是分布式数据库,存在主从复制。
这篇博客,没有涉及到Redis的具体操作,只是用来记录Redis的持久化机制,并且和HDFS的备份方式进行对比从而方便更好的理解和记忆。
人生此处,绝对乐观
Redis持久化操作RDB和AOF 对比于HDFS的SecondaryNode的更多相关文章
- 详解Redis持久化(RDB和AOF)
详解Redis持久化(RDB和AOF) 什么是Redis持久化? Redis读写速度快.性能优越是因为它将所有数据存在了内存中,然而,当Redis进程退出或重启后,所有数据就会丢失.所以我们希望Red ...
- Redis 持久化之RDB和AOF
Redis 持久化之RDB和AOF Redis 有两种持久化方案,RDB (Redis DataBase)和 AOF (Append Only File).如果你想快速了解和使用RDB和AOF,可以直 ...
- redis持久化(RDB、AOF、混合持久化)
redis持久化(RDB.AOF.混合持久化) 1. RDB快照(snapshot) 在默认情况下, Redis 将内存数据库快照保存在名字为 dump.rdb 的二进制文件中. 你可以对 Redis ...
- Redis基础(三)Redis持久化:RDB与AOF
什么是Redis持久化? Redis是键值对的内存数据库,它将数据存储在内存里.客户端发送命令到服务器,再由服务器到内存里查找数据. 一旦Redis服务器进程退出,存储在内存里的数据就会丢失. 为了解 ...
- redis学习(四)redis持久化之RDB、AOF
redis是内存数据库,它把数据存储在内存中,这样在加快读取速度的同时也对数据安全性产生了新的问题,即当redis所在服务器发生宕机后,redis数据库里的所有数据将会全部丢失.为了解决这个问题,re ...
- 详细分析Redis的持久化操作——RDB与AOF
一.前言 由于疫情的原因,学校还没有开学,这也就让我有了很多的时间.趁着时间比较多,我终于可以开始学习那些之前一直想学的技术了.最近这几天开始学习Redis,买了本<Redis实战>, ...
- 【Redis】Redis学习(七) Redis 持久化之RDB和AOF
Redis 持久化提供了多种不同级别的持久化方式:一种是RDB,另一种是AOF. RDB 持久化可以在指定的时间间隔内生成数据集的时间点快照(point-in-time snapshot). AOF ...
- redis——持久化方式RDB与AOF分析
https://blog.csdn.net/u014229282/article/details/81121214 redis两种持久化的方式 RDB持久化可以在指定的时间间隔内生成数据集的时间点快照 ...
- Redis持久化方式--RDB和AOF
转载于:https://www.cnblogs.com/xingzc/p/5988080.html Redis提供了RDB持久化和AOF持久化 RDB机制的优势和略施 RDB持久化是指在指定的时间间隔 ...
随机推荐
- Chapter Zero 0.2.2 内存
目录 内存 内存的多通道设计 DRAM 和 SRAM 只读存储器(ROM) RAM.ROM以及硬盘的区别(转自百度) 内存 CPU的数据都是来自主存储器(main memory),个人计算机的主寄存器 ...
- 宝塔面板&FLASK¢os 7.2 &腾讯云 配置网站出现的若干问题
1.解决跨域问题&&中文显示问题 from flask import Flask, url_for, request, render_template, redirect from f ...
- css variables & CSS 变量
css variables & CSS 变量 https://gist.github.com/xgqfrms-GitHub/5d022a13292c615d2730e84d909e1aba c ...
- VS Code All in One
VS Code All in One Visual Studio Code All in One https://github.com/xgqfrms/vscode/ VS Code Shift + ...
- LeetCode 刷题 App / LeetCode 题解 App
LeetCode 刷题 APP / LeetCode 题解 App 全端支持 http://leetcode-app.xgqfrms.xyz/ http://leetcode-desktop.xgqf ...
- Microsoft Lifecycle Policy
Microsoft Lifecycle Policy The Microsoft Lifecycle Policy gives you consistent and predictable guide ...
- Bastion Host (BH)
Bastion Host (BH) 堡垒机 堡垒主机是专门设计和构造成承受攻击网络上的专用计算机. 该计算机通常承载单个应用程序,例如代理服务器,并且所有其他服务都将被删除或限制以减少对计算机的威胁. ...
- vue render html string
vue render html string shit element ui render string array relativeShowConvert(data) { // log(`data` ...
- go-admin在线开发平台学习-4[细节解析]
紧接着上一期的内容,继续对go-admin的一些细节进行解析. 通用的增删改查方法 在go-admin/common/actions下封装了通用的增删改查方法.在对这些方法进行说明前,先移步到另一个文 ...
- 漫画 | C语言哭了,过年回家,只有我还没对象
C语言回家过年,遇到不少小伙伴. 大家都在外地打拼,一年难得见面,聚到一起吃饭,都非常高兴. 听Java提到TIOBE, 正在喝酒的C语言激动起来. 自己常年在那里排名第二,人类用自己写的程序可真不少 ...