当前位置: 首页 > news >正文

音乐介绍网站怎么做天眼查网站建设公司

音乐介绍网站怎么做,天眼查网站建设公司,用别人网站做app的危害,物流公司怎么做1. 什么是 AOF AOF 是 append only file,AOF 文件中记录了每次的操作指令,在启动 Redis 时,会将 AOF 文件中的数据读取出来以恢复数据。 2. 开启 AOF Redis 默认关闭 AOF,可以通过将 Redis 配置文件中的 appendonly 设置为 ye…

1.  什么是 AOF

AOF 是 append only file,AOF 文件中记录了每次的操作指令,在启动 Redis 时,会将 AOF 文件中的数据读取出来以恢复数据。

2. 开启 AOF

Redis 默认关闭 AOF,可以通过将 Redis 配置文件中的 appendonly 设置为 yes,这样就开启了 AOF,此时 RDB 就会关闭,只能使用 AOF 和 RDB 中的一个。

3. AOF 的工作流程

用户执行指令后,会将该指令写入到 AOF 缓冲区(aof_buf,即一段内存缓冲区),当新的指令数量达到一定时,就会将这些新的指令写入到 AOF 文件中,再保存至硬盘。

注意:

  • 在向硬盘中写数据时,不是用户执行了一条新指令就写一条,而是将新指令积累到一定数量后统一进行写入,这样可以减少写硬盘的次数,从而降低写硬盘对 Redis 性能的影响。
  • Redis 将 AOF 文件写入硬盘是将文件中的数据追加到原文件后,属于顺序读写,速度相对较快。
  • 如果在写 AOF 缓冲区时主机突然掉电了,由于数据是存储在硬盘上的,那么这些数据也会消失不见。这就与 Redis 写 AOF 文件的频率有关。

4. AOF 缓冲区同步文件策略

上面我们谈到,当由于有些数据是存储在 AOF 缓冲区的,那么就有可能因为某些原因导致内存上的数据消息,我们可以通过修改缓冲区的刷新策略尽可能地减少上述的问题。

Redis 提供的刷新策略有三种:

  • always:只要用户执行了一条指令,就将这条指令写入硬盘;
  • everysec: Redis 默认策略,以 1s 为刷新区间,每隔 1s 就将新指令写入硬盘;
  • no:操作系统自行刷新缓冲区。

三种刷新策略的比较:

  • always:刷新频率最高,数据可靠性最高,但由于涉及到频繁写硬盘,就会降低 Redis 性能;
  • everysec: 刷新频率相较于 always 较低,数据可靠性也会降低,但是由于写硬盘的频率降低了,Redis 的性能也会提高;
  • no:刷新频率最低,数据可靠性最差,写硬盘的频率最低,Redis 性能最高。

5. AOF 文件重写机制

随着执行的指令数越来越多,那么写入 AOF 文件中的数据也就会越来越多,导致 AOF 文件变得越来越大。由于 Redis 在启动时会将 AOF 中的数据取出,就导致 Redis 的启动时间变长。

  • Redis 将AOF 文件进行压缩,将多条指令压缩为一条指令,如:set key1 aaa、set key1 bbb、set key1 ccc,那么就会将这三条指令压缩为 set key1 ccc,以此类推;
  • Redis 也会将 AOF 中已经超时的数据删除,以减小文件的大小;
  • 删除无效指令,如:del、keys 等。

较小的 AOF 文件会加快 Redis 程序的启动速度,也会减少硬盘的占用。

6. 触发 AOF 重写机制

6.1 手动触发

  • 手动执行 bgrewriteaof 指令

6.2 自动触发

  • auto-aof-rewrite-min-size:表示触发重写时 AOF 的最小文件大小,默认为 64MB。
  • auto-aof-rewrite-percentage:代表当前 AOF 占用大小相比较上次重写时增加比例。

7. AOF 重写流程

  1. 与 RDB 一样,父进程首先会创建子进程,子进程将指令存入新 AOF 文件中,父进程依然接收客户端请求,子进程进行重写操作;
  2. 由于在子进程进行重写时,依然会有新的指令依次执行,于是父进程会将新的指令同时写入aof_buf 和 aof_rewrite_buf(也是一段内存缓冲区);
  3. 当子进程完成复制后,就会给父进程发送信号,父进程就会将 aof_rewrite_buf 中的数据写入到新 AOF 文件中;
  4. aof_rewrite_buf 中的数据写入完成后,就会将新的 AOF 文件代替旧的 AOF 文件。

注意:

  • 子进程在进行重写时,只是将 Redis 中的数据取出来以 AOF 文件的形式存入新 AOF 文件,并不关系指令的操作流程;
  • AOF 文件是以文本形式存储数据的,而 RDB 文件是以二进制文件存储数据的,相比之下,读取 RDB 文件中的数据比读取 AOF 文件中的数据速度更快;
  • 既然父进程已经将新的指令写入到新的 AOF 文件中,那为什么还要重写旧 AOF 文件?这是因为若在子进程重写的过程中,如果发生主机掉电等问题,由于新 AOF 文件是存储在内存中的,那么新 AOF 文件在主机重启后就会消失,新的指令就不会生效。若将新指令同时写入到旧 AOF 文件中,由于旧 AOF 文件是存储在硬盘上的,那么在 Redis 重启后依然能获取到旧 AOF 文件中的数据,新执行的指令也就会生效,保证了数据完整性。这也就是 AOF 比 RDB 可靠的体现;
  • 若在执行 bgrewriteaof 之前就已经有子进程在进行 AOF 重写操作,那么就不会执行此次重写;
  • 若在执行 bgrewriteaof 之前已经有子进程在进行 RDB 重写操作,那么会等待 RDB 重写执行完再执行 AOF 重写操作。

8. 混合持久化

由于 AOF 文件中的数据是以文本形式存储的,那么在启动 Redis 时读取 AOF 文件中的内容所消耗的时间就会变多,于是可以采取使用 RDB 文件存储方式,即使用二进制存储数据,那么就会加快文件的读取速度。

在 Redis 的配置文件中,若将 aof_use_rdb_preamble 设置为 yes,就表示以二进制形式存储数据。Redis 默认 aof_use_rdb_preamble 为 yes。

http://www.dtcms.com/a/462296.html

相关文章:

  • Quartz 定时 7 篇精选:从 32.768 kHz 到 100+ MHz(可视化与工具)
  • 苏州新区城乡建设网站怎么在百度上免费做广告
  • 开源金融数据平台的架构革命:OpenBB Platform深度技术解析
  • 西安买公司的网站建设荣耀手机品牌介绍
  • 树的遍历算法
  • 360做网站吗用哪个登录网址最好
  • nginx+springboot+redis+mysql+elfk
  • 基于springboot的在线商城系统设计与开发
  • Python自动化测试实战:深度解析Scripts脚本层结构!
  • 天津住房和城乡建设建造师网站与市场营销有关的网站
  • 系统移植篇之uboot-2:编译微观实验
  • 第一章 网络基础
  • 建筑网站起名东道设计公司logo
  • LC175 组合两个表
  • 个人怎么注册网站网站301跳转
  • MongoDB 集合更新后通过 Socket.IO 自动推送数据到前端 (FastAPI 实现)
  • 东胜网站建设医疗网站前置审批查询
  • windows如何设置mongodb的副本集
  • 物流网站有哪些网站被做301跳转了怎么办
  • shell脚本命令删除Zookeeper提供者服务中的指定IP节点
  • 六安网站制作公司价格龙口网络
  • Node.js使用Express框架解决中文乱码问题
  • 设计模式--桥接模式:解耦抽象与实现的灵活设计
  • 做竞价的网站怎么做网站数据库备份
  • 基于FireBeetle 2 ESP32-C5的智能植物光照系统——物联网农业实践
  • 天津住房与城乡建设厅网站首页包头学做网站
  • 【Frida Android】基础篇1:基础环境配置
  • YOLOv11安卓目标检测App完整开发指南
  • 鸿蒙NEXT实战:使用公共事件实现跨进程通信
  • npm升级提示error engine not compatible with your version of node/npm: npm@11.6.2