redis小知识

AOF与RDB的区别

     AOF (Append Only File) 和 RDB (Redis Database) 都是Redis中的持久化机制,但有以下几点不同之处:

  1. 内容格式:AOF 以日志的形式记录所有写操作命令,而 RDB 则是在指定的时间间隔内对数据库进行快照,将数据保存到一个二进制文件中。

  2. 文件大小:AOF 文件通常会比 RDB 文件大,因为它记录了所有写操作命令,而 RDB 文件只是数据的快照。

  3. 恢复速度:AOF 在恢复数据时需要重新执行所有写操作命令,而 RDB 只需要将数据从文件加载到内存中。因此,RDB 的恢复速度通常比 AOF 快,特别是当数据库较大时。

  4. 可读性:AOF 文件以文本形式存储命令,因此可读性较好,可以直接查看和修改。而 RDB 是以二进制格式存储的,不易读取和编辑。

  5. 容灾性:AOF 采用追加写入方式,实时记录数据操作,因此更可靠,数据丢失的风险较低。而 RDB 是定时保存数据库快照,如果在保存之前发生故障,可能会有数据丢失。

        AOF 适用于需要最小化数据丢失风险的场景,而 RDB 适用于需要较快的数据恢复速度和较小的文件大小的场景。在实际应用中,可以根据具体需求选择使用哪种持久化机制,也可以同时使用两种方式,以实现更好的容灾性能和性能优化。

AOF持久化

      AOF持久化是一种将数据持久化到磁盘的方式,通过记录操作日志的方式将数据的修改操作记录下来,当需要恢复数据时,只需要重新执行这些操作即可。

     AOF持久化解决了数据持久化的实时性问题,主流的解决方案是通过将操作指令写入到AOF文件中,实现数据的实时同步。当客户端发送指令时,指令并不会立即执行,而是先存入缓冲区,生成一个AOF文件。当AOF文件的大小达到一定阶段或者间隔一定时间后,系统会将缓冲区中的指令同步到AOF文件中。

在AOF写数据的过程中,可以通过appendfsync参数来设定同步策略。有三种策略可选择:

  1. always:每次指令都会同步进AOF文件,保证数据的完整性和准确性,但由于需要频繁的磁盘写入,效率较低。

  2. everysec:每秒钟会将缓冲区中的指令同步一次到AOF文件中。虽然会导致一秒钟的数据丢失,但是在大部分场景下仍然可以接受,并且能够提供较好的性能。

  3. no:由操作系统控制同步策略,整体不可控。这种策略下可能会存在数据丢失的风险,不推荐在生产环境中使用。

可以通过设置appendonly参数的值为yes来开启AOF持久化配置,默认情况下是关闭的。同时,可以通过设置appendfsync参数的值来选择适合业务需求的同步策略。

AOF工作原理

         AOF (Append-Only File) 是Redis持久化机制之一,它记录了所有写操作的日志,以文件追加的方式保存在磁盘上。AOF工作原理和eveysec开启重写的流程如下所述:

  1. 执行set指令:当执行一个写操作时,Redis会将这个操作以命令的形式追加到AOF文件的末尾。这个操作会被主进程处理。

  2. 开启子进程:在执行set指令时,主进程会fork出一个子进程来处理重写操作。

  3. 缓存区:在执行set指令时,Redis同时会开辟一个AOF重写的缓冲区,用于向重写子进程提供数据。重写子进程会从缓冲区中读取数据。

  4. 执行bgrewriteaof指令:通过执行bgrewriteaof指令,主进程开始进行AOF重写。

  5. 重写子进程:在执行bgrewriteaof指令后,主进程会fork出另一个子进程来执行AOF重写操作。这个子进程会发送一条提示信息表示正在执行AOF重写操作。

  6. 创建重写后的AOF文件:重写子进程会遍历整个数据库,将所有的操作以命令的形式写入一个临时文件中。

  7. AOF文件替换:当重写子进程完成重写操作后,它会将临时文件重命名为新的AOF文件,并将新文件路径发送给主进程。

  8. 替换AOF文件:主进程接收到新的AOF文件路径后,将原来的AOF文件替换为新文件。这样,AOF重写操作就完成了。

      AOF重写操作的目的是为了解决AOF文件过大的问题。随着时间的推移,AOF文件会越来越大,影响Redis的加载性能。通过AOF重写机制,可以将AOF文件压缩成更小的尺寸,同时保留了与原文件等效的数据。

     

AOF写数据遇到的问题 

      AOF写数据遇到的问题:

  • 同一个key设置多次:如果同一个key被设置多次,前几次的设置可能是无效的数据,不需要执行,只需要保留最终的设置。
  • 重写:为了提高AOF的持久化效率、数据恢复效率和磁盘利用率,需要进行AOF重写操作,将AOF文件中的冗余指令去除,只保留最终数据的写入命令。
  • 作用:提高持久化效率、数据恢复效率和磁盘利用率。

AOF写数据的规则:

  • 进程内超时的数据不写入AOF文件:当数据达到超时时间后,如果还没有被修改,就不需要再写入AOF文件。
  • 忽略无效指令,只保留最终数据的写入命令:对于同一个key的多次写入指令,只需要保留最后一次的写入指令,前面的写入指令可以忽略。
  • 对同一数据的多条写入命令,合并为一条:多条写入同一数据的指令可以合并为一条,减少写入AOF文件的指令数量。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/13962.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

WDW-100G 高温拉力试验机 技术方案书

一、整机外观图: 二、项目简介: 微机控制高温拉力试验机是电子技术与机械传动相结合的新型材料试验机,它具有宽广准确的加载速度和测力范围,对载荷、变形、位移的测量和控制有较高的精度和灵敏度,还可以进行等速加载、…

FFmpeg开发笔记(三十)解析H.264码流中的SPS帧和PPS帧

《FFmpeg开发实战:从零基础到短视频上线》一书的“2.1.1 音视频编码的发展历程”介绍了H.26x系列的视频编码标准,其中H.264至今仍在广泛使用,无论视频文件还是网络直播,H.264标准都占据着可观的市场份额。 之所以H.264取得了巨大…

CDLinux下载网站

CDlinux - Browse /CDlinux-ISO at SourceForge.net

9.2 字符串拼接

字符串拼接 使用运算符拼接字符串 使用加号""运算符,可将几个较小的字符串拼接成一个更大的字符串,其拼接的前后顺序严格遵循每个字符串在加法表达式中出现的顺序。 s : "北冥有鱼,其名为鲲。"s s 鲲之大&#xff0…

用神经网络预测三角形的面积

周末遛狗时,我想起一个老问题:神经网络能预测三角形的面积吗? 神经网络非常擅长分类,例如根据花瓣长度和宽度以及萼片长度和宽度预测鸢尾花的种类(setosa、versicolor 或 virginica)。神经网络还擅长一些回…

2024中青杯A题数学建模成品文章数据代码分享

人工智能视域下养老辅助系统的构建 摘要 随着全球人口老龄化的加剧,养老问题已经成为一个世界性的社会问题,对社会各个方面产生了深远影响,包括劳动力市场、医疗保健和养老金制度等。人口结构变化对养老服务的质量和覆盖面提出了更高要求。特…

Python 爬虫编写入门

一、爬虫概述 网络爬虫(Web Crawler)或称为网络蜘蛛(Web Spider),是一种按照一定规则,自动抓取互联网信息的程序或者脚本。它们可以自动化地浏览网络中的信息,通过解析网页内容,提取…

3台机器快速安装ELK集群

安装和配置 Elasticsearch、Kibana 和 Logstash 以下是安装和配置 Elasticsearch、Kibana 和 Logstash 的详细步骤,并设置开机自启。 步骤 1:修改系统参数 编辑系统参数并使其生效: vim /etc/sysctl.conf添加以下行: vm.max_…

Xpath元素定位和三大等待,三大切换

在页面的操作过程当中,都需要适当的等待。特别是: 候【发生了页面切换的时候】。而我们接下来的操作都是在变化的内容上。 代码就要等等页面的加载,等等页面的渲染。代码是非常快的,页面加载跟不 上,就需要等待。 三大…

getaway基本配置

Getaway 是一款用于容器化应用的轻量级 API 网关。它提供了一种简单的方式来管理和路由 API 请求,通常用于微服务架构中。以下是 Getaway 的基本配置指南,包括安装、配置文件示例、以及一些常见的配置选项。 ### 1. 安装 Getaway 通常通过 Docker 容器…

用友开发平台调用审核提示U8授权失败可能原因

U8授权失败可能有多种原因,这里有几个可能的解决方案供您参考: 登录接口未调用:在调用审核接口(如audit、abandon、verify、unverify)之前,请确保已经调用了登录接口(login)。如果登…

红队攻防渗透技术实战流程:云安全之云原生安全:K8s安全

红队云攻防实战 1.云原生-K8s安全-名词架构&各攻击点1.1 云原生-K8s安全-概念1.2 云原生-K8s安全-K8S集群架构解释1.2.1 K8s安全-K8S集群架构-Master节点1.2.2 K8s安全-K8S集群架构-Node节点1.2.3 K8s安全-K8S集群架构-Pod容器1.3 云原生安全-K8s安全-K8S集群攻击点 `(重点…

ARP基本原理

相关概念 ARP报文 ARP报文分为ARP请求报文和ARP应答报文,报文格式如图1所示。 图1 ARP报文格式 Ethernet Address of destination(0–31)和Ethernet Address of destination(32–47)分别表示Ethernet Address of dest…

【算法】前缀和——除自身以外数组的乘积

本节博客是用前缀和算法求解“除自身以外数组的乘积”,有需要借鉴即可。 目录 1.题目2.前缀和算法3.变量求解4.总结 1.题目 题目链接:LINK 2.前缀和算法 1.创建两个数组 第一个数组第i位置表示原数组[0,i-1]之积第二个数组第i位置表示原数组[i1,n-1]…

laravel8 JWT配置

一、安装JWT composer require tymon/jwt-auth二、config/app.php 注册服务提供者 providers > [Tymon\JWTAuth\Providers\LaravelServiceProvider::class, ]aliases > [JWTAuth > Tymon\JWTAuth\Facades\JWTAuth::class,JWTFactory > Tymon\JWTAuth\Facades\JWT…

Hadoop 客户端 FileSystem加载过程

如何使用hadoop客户端 public class testCreate {public static void main(String[] args) throws IOException {System.setProperty("HADOOP_USER_NAME", "hdfs");String pathStr "/home/hdp/shanshajia";Path path new Path(pathStr);Confi…

AWS安全性身份和合规性之Amazon Detective

分析和直观呈现安全数据,以调查潜在的安全问题。 Amazon Detective使您可以更轻松地分析、调查和快速确定潜在安全问题或可疑活动的根本原因。Amazon Detective会自动从您地AWS资源中收集日志数据并使用机器学习、统计分析和图论来构建一组关联的数据,使…

在DAYU200上实现OpenHarmony跳转拨号界面

一、简介 日常生活中,打电话是最常见的交流方式之一,那么如何在OpenAtom OpenHarmony(简称“OpenHarmony”)中进行电话服务相关的开发呢?今天我们可以一起来了解一下如何通过电话服务系统支持的API实现拨打电话的功能…

ECMAScript 详解

ECMAScript 是一种脚本语言规范,由欧洲计算机制造商协会(ECMA)通过 ECMA-262 标准化,广泛用于客户端脚本编程。它最著名的实现是 JavaScript,主要用于 Web 开发。以下是 ECMAScript 的详细解析: ### 1. 历…

C#中System.Threading.Timer的使用

文章速览 概述创建计时器对象循环执行的方法停止计时器参考文章 坚持记录实属不易,希望友善多金的码友能够随手点一个赞。 共同创建氛围更加良好的开发者社区! 谢谢~ 概述 本文着重于System.Threading.Timer的简单使用方法。 由于在实际开发过程中&…