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

【Redis】AOF日志的三种写回机制

目录

  • 1、背景
  • 2、appendfsync always(同步写回)
    • 【1】工作机制
    • 【2】特点
    • 【3】实现原理
  • 3、appendfsync everysec(每秒写回,默认配置)
    • 【1】工作机制
    • 【2】特点
    • 【3】实现原理
  • 4、appendfsync no(操作系统控制)
    • 【1】工作机制
    • 【2】特点
    • 【3】实现原理
  • 5、三种策略对比

1、背景

redis的AOF(Append Only File)持久化提供了三种不同的写回策略,通过appendfsync配置项来控制,这三种策略在数据安全性和性能之间提供了不同的权衡选择。

2、appendfsync always(同步写回)

【1】工作机制

1、每次写入命令后立即执行fsync,将数据同步到磁盘
2、确保每个写命令都持久化到磁盘后才返回成功响应

【2】特点

维度说明
数据安全性最高,级别不会丢失数据
性能影响最差,每次写入都有磁盘I/O等待
适用场景对数据一致性要求极高的金融场景
吞吐量低,受限于磁盘IOPS

【3】实现原理

1、命令写入内存数据库
2、命令追加到AOF缓冲区
3、立即调用fsync()将缓冲区内容写入磁盘
4、返回客户端成功响应

3、appendfsync everysec(每秒写回,默认配置)

【1】工作机制

1、后台线程每秒执行一次fsync
2、折中方案,平衡性能和数据安全

【2】特点

维度说明
数据安全性可能会丢失最近1秒的数据
性能影响中等,突发写入可能有延迟
适用场景大多数生产环境的推荐配置
吞吐量较高,适合常规业务场景

【3】实现原理

1、命令写入内存数据库
2、命令追加到AOF缓冲区
3、主线程不阻塞,后台线程每秒检查一次缓冲区,缓冲区有数据就执行fsync()同步到磁盘
4、返回客户端成功响应

4、appendfsync no(操作系统控制)

【1】工作机制

1、完全由操作系统决定何时同步到磁盘
2、通常30秒一次,取决于内核配置

【2】特点

维度说明
数据安全性最低,可能丢失较多数据
性能影响最好,无额外同步开销
使用场景允许数据丢失的非关键业务
吞吐量最高,适合大量写入场景

【3】实现原理

1、命令写入内存数据库
2、命令追加到AOF缓冲区
3、立即返回客户端成功响应
4、操作系统在适当时机调用fsync()

5、三种策略对比

策略数据安全性性能数据丢失风险适用场景
always极高几乎为零金融交易,支付系统
everysec≤1秒数据大多数web应用
no可能丢失多秒数据缓存、非关键数据
http://www.lryc.cn/news/2383409.html

相关文章:

  • leetcode hot100刷题日记——7.最大子数组和
  • 基于Spring Boot和Vue的在线考试系统架构设计与实现(源码+论文+部署讲解等)
  • MySQL Workbench 工具导出与导入数据库:实用指南
  • Android 绘制折线图
  • 自建srs实时视频服务器支持RTMP推流和拉流
  • ubuntu22.04 卸载ESP-IDF
  • Spring IOCDI————(2)
  • 80. Java 枚举类 - 使用枚举实现单例模式
  • 融云 uni-app IMKit 上线,1 天集成,多端畅行
  • Java中的集合详解
  • 利用 Java 爬虫根据关键词获取某手商品列表
  • Axure项目实战:智慧运输平台后台管理端-订单管理2(多级交互)
  • 篇章五 项目创建
  • Ntfs!ATTRIBUTE_RECORD_HEADER结构$INDEX_ROOT=0x90的一个例子
  • AGI大模型(30):LangChain链的基本使用
  • 代码随想录算法训练营第六十六天| 图论11—卡码网97. 小明逛公园,127. 骑士的攻击
  • [创业之路-364]:企业战略管理案例分析-5-战略制定-宇树科技的使命、愿景、价值观的演变过程
  • React--函数组件和类组件
  • Flask 路由装饰器:从 URL 到视图函数的优雅映射
  • DDoS防护实战——从基础配置到高防IP部署
  • aws平台s3存储桶夸域问题处理
  • HOT100(二叉树)
  • 【vue-text-highlight】在vue2的使用教程
  • pycharm无法正常调试问题
  • springboot3.4.5-springsecurity+session
  • 网络安全利器:蜜罐技术详解
  • Leetcode百题斩-哈希
  • MySQL替换瀚高数据库报错: TO_DAYS()不存在(APP)
  • EXIST与JOIN连表比较
  • 【Linux】利用多路转接epoll机制、ET模式,基于Reactor设计模式实现