Redis AOF和RDB

2023-11-06

Redis AOF和RDB

    Redis是内存型数据库,为了保证数据在断电后不会丢失,需要将内存中的数据持久化到硬盘上。

RDB持久化

将某个时间点的所有数据都存放到硬盘上

可以将快照复制到其他服务器从而创建具有相同数据的服务器副本

如果系统发生故障,将会丢失最后一次创建快照之后的数据

如果数据量很大,保存快照的时间会很长

AOF持久化

将写命令添加到AOF文件(Append Only File)的末尾

使用AOF持久化需要设置同步选项,从而确保写命令同步到磁盘文件上的时机。这是因为对文件进行吸入并不会马上将内容同步到磁盘上,而是先存储到缓冲区,然后操作系统决定什么时候同步到磁盘。有以下同步选项:

选项

同步频率

always

每个写命令都同步

everysec

每秒同步一次

no

让操作系统来决定何时同步

always选项会严重减低服务器的性能

everysec选项比较合适,可以保证系统崩溃时只丢失一秒左右的数据,并且Redis每秒执行一次同步对服务器几乎没有任何影响;

no选项并不能给服务器带来多大的提升,而且也会增加系统崩溃时数据丢失的数量。

随着服务器写请求的增多,AOF文件会越来越大。Redis提供了一种将AOF重写的特性,能够去除AOF文件中的冗余写命令。

 

 

 

RDB:

Redis主进程fork一个子进程,让子进程执行磁盘IO操作来进行持久化。

RDB将数据写入一个临时文件,持久化结束后,用这个临时文件替换上次持久化的文件,这些数据文件代表了某一个时刻中redis的数据。

但是,RDB是间隔一段时间进行持久化的,如果持久化之间redis发生故障,这一段时间内的数据就会丢失(RDB最大的缺点,导致不适合做第一优先的恢复方案,如果你依赖RDB做第一优先恢复方案,会导致丢失比较多的数据)。

为什么是子进程?

(主要是出于Redis性能的考虑,(1)Redis RDB持久化机制会阻塞主进程,这样主进程就无法响应客户端请求。(2)Redis对客户端响应请求的工作模型是单进程和单线程的,如果在主进程内启动一个线程,这样会造成对数据的竞争条件,为了避免使用锁降低性能。基于以上两点这就是为什么Redis通过启动一个进程来执行RDB了)

   

AOF:

可以简单的认为AOF就是日志文件,此文件只会记录"变更操作"(例如:set/del等),将"操作 + 数据"以格式化指令的方式append(追加,顺序写磁盘,没有任何磁盘寻址的开销,因此效率非常高)到操作日志文件的尾部(一般设置每秒一次),在append操作返回后(已经写入到文件或者即将写入),才进行实际的数据变更。"日志文件"保存了历史所有的操作过程;当server需要数据恢复时,可以直接replay此日志文件,即可还原所有的操作过程。
但是AOF文件比RDB文件大,且恢复速度慢。

若AOF文件过大,可以使用BGREWRITEAOF命令(BGrewriteAOF),优化aof文件

 

 

 

 

 

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Redis AOF和RDB 的相关文章

  • ARM汇编基础详解(PS学习汇编的原因)

    目录 前言 1 GNU 汇编语法 2 Cortex A7 常用汇编指令 2 1 处理器内部数据传输指令 内部寄存器数据非内存数据 2 2 存储器访问指令 RAM 2 3 压栈和出栈指令 了解 2 4 跳转指令 2 5 算术运算指令 2 6
  • brew 安装 for Mac

    安装命令 usr bin ruby e curl fsSL https raw githubusercontent com Homebrew install master install brew 官网 http brew sh 安装过程遇
  • 电子学会2022年09月青少年软件编程C语言等级考试试卷二级真题及(参考答案)

    编程题 共5题 共100分 1 统计误差范围内的数 考试题目 统计一个整数序列中与指定数字m误差范围小于等于X的数的个数 时间限制 5000 内存限制 65536 输入 输入包含三行 第一行为N 表示整数序列的长度 N lt 100 第二行
  • 代码静态扫描工具sonar介绍

    一 SonarQube整体介绍 SonarQube为静态代码检查工具 采用B S架构 帮助检查代码缺陷 改善代码质量 提高开发速度 通过插件形式 可以支持Java C C JavaScripe等等二十几种编程语言的代码质量管理与检测 通过客
  • 右值引用详解

    何谓右值 右值引用 右值引用与其他对比 右值引用与移动语义 右值引用与std move 移动语义与std move 移动语义注意事项 移动语义与swap 完美转发 何谓右值 一个最简单判断左值 右值的方式是 等号左边的值即左值 等号右边的值
  • 深度学习之浅见

    通常来说 大家认为深度学习的观点是Geoffrey Hinton在2006年提出的 这一算法提出之后 得到了迅速的发展 关于深度学习 zouxy09的专栏中有详细的介绍 Free Mind 的博文也很值得一读 本博文是我对深度学习的一点看法
  • VS Code Remote Development

    在Windows下编辑Linux代码 并且有Linux下的系统接口 第三方dep库的语法解析 代码提示 自动补全 跳转 用起来真香 困扰了Linux后台开发人员多年的难题终极解决方案 要求VS Code版本在1 35 1以上 1 安装远程开
  • 基础学习JavaScript 之 Array

    笔记文 Array JavaScript内置对象之一 由索引值来排序的数据集合 下面就列出了array上的方法 会改变自身的方法 copyWithin 在数组内部 将一段元素序列拷贝到另一段元素序列上 覆盖原有的值 fill 将数组中指定区
  • dc-9 靶机渗透学习

    信息收集 用nmap扫描当前网段 nmap sP 192 168 202 0 24 对靶机进行端口扫描 nmap A p v 192 168 202 148 访问靶机的80端口 进行框架识别 无框架的页面 尝试web服务漏洞 用dirsea
  • java数据结构-栈

    栈 1 栈的定义 栈 Stack 是只允许在一端进行插入或删除的线性表 首先栈是一种线性表 但限定这种线性表只能在某一端进行插入和删除操作 栈顶 Top 线性表允许进行插入删除的那一端 栈底 Bottom 固定的 不允许进行插入和删除的另一
  • VMware+CentOS7搭建私有云桌面服务

    VMware CentOS7搭建私有云桌面服务 1 安装VMware虚拟机工作台 官网下载安装包 版本 14 1 3 Pro 地址 https my vmware com en web vmware info slug desktop en
  • 详解从0开始的嵌入式学习路线,学什么、怎么学?

    嵌入式是个大筐 什么都可以往里面装 电子 机械 计算机 自动化 测控 通信 物联网 很多很多专业都和嵌入式沾边 硬件 驱动 操作系统 网络 应用 算法 很多同学越学越迷糊 越学越感觉什么也不会 首先要记住一句话 嵌入式学习奥义 先观其广 再
  • osgEarth的Rex引擎原理分析(五十八)osgEarth::ShaderFactory osgEarth::ShaderLoader关系

    目标 五十四 中的问题130 osgEarth ShaderFactory osgEarth ShaderLoader关系 ShaderFactory主要用来产生各个着色器阶段的main函数 一般用户不需要直接使用它 除非有特殊的定制需要
  • [CTF]抓住那只猫(XCTF 4th-WHCTF-2017)

    原作者 darkless 题目描述 抓住那只猫 思路 打开页面 有个输入框输入域名 输入baidu com进行测试 发现无任何回显 输入127 0 0 1进行测试 发现已经执行成功 执行的是一个ping命令 一开始想的应该是命令拼接执行 但
  • React18的useEffect会执行两次

    React18的useEffect会执行两次 一 执行两次的useEffect 二 React18 useEffect 新特性 如何应对 1 首先先了解一下 React 中 useEffect 执行的时机 2 怎么样才能让 Effect 执
  • 0101日志-运维-mysql

    1 错误日志 错误日志 Error Log 错误日志记录了MySQL引擎在运行过程中出现的错误和异常情况 这些错误可能包括启动和关闭问题 数据库崩溃 权限问题等 错误日志对于排查和解决MySQL引擎问题非常有帮助 改日志默认开启 默认存放目
  • 知识科普:什么是AGI?

    原文链接 最近ChatGPT大火 火到原来卖酒卖保险的人也都开始直播聊ChatGPT了 其中大家或多或少会提到一个词 AGI 看清楚不是GAI也不是AIGC 今天就和大家聊聊AGI是什么 AGI最近经常被提到 主要是因为ChatGPT的开发
  • 网络编程——TCP

    网络编程 TCP TCP编程 TCP是一种可靠的 基于连接的网络协议 它是面向字节流的 即从一个进程到另一个进程的二进制序列 一条TCP连接需要两个端点 这两个端点需要分别建立各自的套接字 通常一方用于发送请求和数据 称为客户端 另一方用于
  • Pickle 详解

    那么为什么需要序列化和反序列化这一操作呢 1 便于存储 序列化过程将文本信息转变为二进制数据流 这样就信息就容易存储在硬盘之中 当需要读取文件的时候 从硬盘中读取数据 然后再将其反序列化便可以得到原始的数据 在Python程序运行中得到了一
  • STM32开发(十九)STM32F103 数据手册 —— 低功耗模式解析

    上一篇 主目录 下一篇 文章目录 低功耗介绍 stm32 供电框图 低功耗模式 睡眠模式 停止模式 待机模式 低功耗模式汇总 低功耗介绍 系统复位或上电复位后 微控制器进入运行模式 在运行模式下 CPU通过HCLK提供时钟 并执行程序代码

随机推荐

  • Apollo学习笔记(21)图的深度优先遍历(DFS)和广度优先遍历(BFS)算法分析

    首先奉上大神链接 https www cnblogs com qzhc p 10291430 html 由于最近在看轨迹规划的资料 图遍历是基础 故拜读了大神的一些文章 在此记录 深度优先遍历 深度优先遍历 Depth First Sear
  • Vim常用操作快捷键记录

    经常忘记vim的一些操作快捷键 现在将其记录起来 方便以后查阅 这里定义以文本右方向为前 文本左方向为后 上下左右方向键 k j h l 以 字 为步长向前跳动 到达字首 w 以 字 为步长向后跳动 到达字首 b 以 字 为步长向前跳动 到
  • 共享计算机的网络凭证,win10设置共享文件夹时显示要网络凭证

    一 共享文件夹所在电脑设置 1 右键我的电脑 管理 系统工具 本地用户和组 用户 中间空白区域右键 新用户 2 输入自设的用户名和密码 如图勾选 创建 3 右键需要共享的文件见 安全 编辑 4 点击添加 5 输入新建的用户名 test 检查
  • 失业的程序员(九):正文篇:创业就是一场戏

    http www shenyisyn org 2013 04 23 tjp 2 htm 一 正文 跨入电商 说到我家人 我父母都是小学教师 对我从小管教无比严厉 他们希望我将来也能子承父业或者母业 并且更希望将来我的子女也能如此继承着 用句
  • 【1002】写出这个数

    题目链接 写出这个数 算法 include
  • 【数据集处理】WiderPerson介绍以及转YOLO格式(图片教程及代码----超详细)

    WiderPerson转YOLO格式 WiderPerson介绍 原论文中数据信息 下载后的文件样式 Annotations WiderPerson转YOLO 数据集下载地址 转格式以及选取类别 关于txt文件的处理 直接运行 生成yolo
  • 【网络安全】黑客自学笔记

    1 前言 作为一个合格的网络安全工程师 应该做到攻守兼备 毕竟知己知彼 才能百战百胜 计算机各领域的知识水平决定你渗透水平的上限 1 比如 你编程水平高 那你在代码审计的时候就会比别人强 写出的漏洞利用工具就会比别人的好用 2 比如 你数据
  • Feign远程调用注意事项

    Feign 远程查询失败 不需要回滚 CPU密集型和 IO密集型 CPU涉及的是计算能力 IO是文件读取类型的这种
  • 共识算法 --- PBFT、Raft和Paxos

    目录 一 Raft共识算法 1 什么是Raft 2 Raft的工作流程 3 Raft的相关应用 4 Raft的缺陷 5 Raft中三个子问题 5 1 Leader选举 Election 5 1 1 节点的三种角色 5 1 2 选举过程 5
  • 字节是真的难进,测开4面终上岸,压抑5个月,终于可以放声呐喊

    这次字节的面试 给我的感触很深 意识到基础的重要性 一共经历了五轮面试 技术4面 HR面 下面看正文 本人自动专业毕业 压抑了五个多月 终于鼓起勇气 去字节面试 下面是我的面试过程 很多面试题 都是靠记忆写的 希望能帮助到大家 致那些努力的
  • http各个版本的区别

    http进化史 http0 9 只有GET请求 也不支持请求头信息 请求信息只有下面一行 GET www baidu com http1 0 在请求中指定版本号 支持GET POST HEAD http1 1 http1 1新增了 OPTI
  • 进制压缩加密_token参数

    进制压缩加密 token参数 网址 https sh meituan com meishi c17 进入抓包 查看要获取的数据 可以在请求地址 找到 getPoiList 的请求链接 请求参数有多个 但是多次请求对比发现只有 token 参
  • LeetCode:118(Python)—— 杨辉三角(简单)

    杨辉三角 概述 给定一个非负整数 numRows 生成 杨辉三角 的前 numRows 行 在 杨辉三角 中 每个数是它左上方和右上方的数的和 输入 numRows 5 输出 1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 输入
  • 超经典!分割任务数据集介绍。

    文章目录 前言 一 IRSTD 1k 二 Pascal VOC2012 1 数据简介 2 分割任务数据集介绍 三 iSAID 总结 前言 在探索网络的过程中 比较基础和重要的工作是了解数据 今天来总结下我目前使用过的分割任务数据集 本博文将
  • Linux进阶_DNS服务和BIND之实战案例篇

    成功不易 加倍努力 1 实战案例 实现DNS正向主服务器 2 实战案例 实现DNS从服务器 3 实战案例 实现DNS forward 缓存 服务器 4 实战案例 利用view实现智能DNS 5 实战案例 综合案例 实现Internet 的D
  • 【linux多线程(四)】——线程池的详细解析(含代码)

    目录 什么是线程池 线程池的应用场景 线程池的实现 线程池的代码 C linux线程 壹 初识线程 区分线程和进程 线程创建的基本操作 线程 二 互斥量的详细解析 线程 三 条件变量的详细解析 什么是线程池 线程池是一种线程使用模式 它是将
  • java 栅栏_Java并发基础-栅栏(CountDownLatch)与闭锁(CyclicBarrier)

    1 闭锁CountDownLatch 闭锁CountDownLatch用于线程间的同步 它可以使得一个或者多个线程等待其它线程中的某些操作完成 它有一个int类型的属性count 当某个线程调用CountDownLatch对象的await方
  • android获取各种系统路径的方法

    android获取各种系统路径的方法 整理了一些安卓开发中可能会用到的各种路径的获取方法 欢迎评论 通过Environment获取的Environment getDataDirectory getPath 获得根目录 data 内部存储路径
  • Spring Boot + 阿里OSS实现图片上传,返回预览的地址,实现图片预览

    阿里OSS实现图片上传 返回预览地址 注册阿里OSS 首先进入阿里云的官网 https www aliyun com 紧接着点击首页上的立即开通 点击这个创建一个bucket 其余的默认就可以 可以根据自己的实际需求去写 使用代码操作阿里O
  • Redis AOF和RDB

    Redis AOF和RDB Redis是内存型数据库 为了保证数据在断电后不会丢失 需要将内存中的数据持久化到硬盘上 RDB持久化 将某个时间点的所有数据都存放到硬盘上 可以将快照复制到其他服务器从而创建具有相同数据的服务器副本 如果系统发