【redis】Redis AOF

1、AOF的基本概念

  • AOF持久化方式是通过保存Redis所执行的写命令来记录数据库状态的。
  • AOF以日志的形式来记录每个写操作(增量保存),将Redis执行过的所有写指令记录下来(读操作不记录)。
  • AOF文件是一个只追加的文件,只允许追加文件但不可以改写文件。

2、配置

  • AOF默认不开启,在conf配置文件中进行配置。
  • 修改redis.conf配置文件
appendonly no
//修改
appendonly yes
  • 默认文件名是appendonly.aof
  • 默认是启动后的相对路径,redis在哪里启动,appendonly.aof文件就在哪生成

3、AOF持久化

3.1流程

  1. 写命令追加:客户端的写命令请求会被追加到AOF缓冲区内。
  2. 同步到磁盘:AOF缓冲区根据AOF持久化策略(alwayseverysecno)将操作同步到磁盘的AOF文件中。
  3. AOF文件重写:当AOF文件大小超过重写策略或手动触发时,会对AOF文件进行重写,以压缩AOF文件容量。重写过程会创建一个新的AOF文件,只包含恢复当前数据状态所必需的命令。
  4. 数据恢复:当Redis服务重启时,会重新加载AOF文件中的写操作,以达到数据恢复的目的。

3.2三种写回策略

  1. always(每次)
    • 含义:每次写入操作都立即同步到AOF文件。
    • 特性:
      • 数据零误差:由于每次写操作都立即同步,因此数据安全性最高,几乎不会丢失数据。
      • 性能较低:频繁的磁盘IO操作会对Redis的性能产生较大影响。
    • 适用场景:对数据安全性要求极高,可以容忍较低性能的场景。
  2. everysec(每秒)
    • 含义:每秒将缓冲区中的写命令同步到AOF文件。
    • 特性:
      • 数据准确性较高:在大多数情况下,数据只会丢失一秒内的写操作。
      • 性能较高:每秒同步一次,避免了频繁的磁盘IO操作,对Redis性能影响较小。
    • 适用场景:对数据安全性有一定要求,同时希望保持较高性能的场景。这是Redis AOF的默认配置。
  3. no(系统控制)
    • 含义:由操作系统控制写命令同步到AOF文件的频率。
    • 特性:
      • 整体过程不可控:同步频率完全取决于操作系统的调度和硬件性能。
      • 性能最好:Redis几乎不参与同步操作,性能开销最小。
      • 数据安全性最低:在系统突然宕机的情况下,可能会丢失较多的数据。
    • 适用场景:对数据安全性要求不高,追求极致性能的场景。

4、AOF的特点

优势:

  1. 更好的数据安全性:由于AOF记录了每个写操作,因此即使出现意外宕机,也可以通过AOF文件恢复数据。
  2. 可读的日志文本:AOF文件以文本格式存储,可以通过查看AOF文件来处理误操作或进行数据审计。

劣势:

  1. 占用更多的磁盘空间:与RDB相比,AOF文件通常更大,因为它记录了所有的写操作。
  2. 恢复备份速度较慢:由于AOF需要执行文件中的每个写操作来恢复数据,因此恢复速度通常比RDB慢。
  3. 性能压力:如果每次写操作都立即同步到AOF文件(always策略),会对Redis的性能产生一定的影响。

5、应用场景

  1. 数据安全性要求高
    • 金融交易系统:在金融领域,数据的完整性和安全性至关重要。AOF机制通过记录所有的写操作,可以在系统崩溃后几乎无数据丢失地恢复数据。
    • 关键业务系统:对于不能容忍任何数据丢失的系统,如电商平台的核心交易系统,AOF提供了更高的数据安全性保障。
  2. 实时性要求高
    • 实时数据分析:在一些实时数据分析场景中,数据的实时性和一致性非常重要。AOF可以在不阻塞主线程的情况下,异步地将写操作追加到AOF文件中,从而确保数据的实时性和一致性。
    • 实时日志记录:AOF以文本形式存储写操作,这使得它非常适合用于实时日志记录场景。系统管理员可以通过查看AOF文件来跟踪Redis的写操作,并进行审计或故障排查。
  3. 写操作频繁
    • 高并发写入场景:在写操作频繁的系统中,如缓存系统、消息队列等,AOF机制能够确保所有的写操作都被持久化保存,防止因系统崩溃而导致的数据丢失。
    • 数据更新频繁的应用:对于需要频繁更新数据的应用,如在线游戏、实时排名等,AOF能够确保每次数据更新都被记录下来,并在需要时恢复。
  4. 容灾备份
    • 异地容灾:通过将AOF文件备份到远程服务器,可以实现Redis的异地容灾。即使本地服务器发生故障,也可以从远程服务器上的AOF文件恢复数据。
    • 数据迁移:AOF文件也可以用于Redis的数据迁移。通过复制AOF文件到新的服务器,并在新服务器上重新加载AOF文件,可以实现Redis数据的快速迁移。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Redis 高级数据结构业务实践

0、前言 本文所有代码可见 > 【gitee code demo】 本文会涉及 hyperloglog 、GEO、bitmap、布隆过滤器的介绍和业务实践 1、HyperLogLog 1.1、功能 基数统计(去重) 1.2、redis api 命令作用案例PFADD key element [element ...]添加元素到keyPF…

PortSip测试

安装PBX 下载 免费下载 PortSIP PBX 安装PBX,安装后,运行 ,默认用户是admin 密码是admin,然后配置IP 为192.168.0.189 设置域名为192.168.0.189 配置分机 添加分机,添加了10001、10002、9999 三个分机&#xff0c…

深度学习实验第T2周:彩色图片分类

>- **🍨 本文为[🔗365天深度学习训练营](https://mp.weixin.qq.com/s/0dvHCaOoFnW8SCp3JpzKxg) 中的学习记录博客** >- **🍖 原作者:[K同学啊](https://mtyjkh.blog.csdn.net/)** 目录 一、前言 目标 二、我的环境&#…

【Linux进程通信】进程间通信介绍、匿名管道原理分析

目录 进程通信是什么? 进程通信的目的 进程通信的本质 匿名管道:基于文件级别的通信方式 站在文件描述符角度-深度理解管道原理 进程通信是什么? 进程通信就是两个或多个进程之间进行数据层面的交互。 进程通信的目的 1.数据传输&#x…

已解决java.security.acl.LastOwnerException:无法移除最后一个所有者的正确解决方法,亲测有效!!!

已解决java.security.acl.LastOwnerException:无法移除最后一个所有者的正确解决方法,亲测有效!!! 目录 问题分析 出现问题的场景 报错原因 解决思路 解决方法 1. 检查当前所有者数量 2. 添加新的所有者 3. 维…

mac Canon打印机连接教程

官网下载安装驱动: 选择打印机类型和mac系统型号下载即可 Mac PS 打印机驱动程序 双击安装 系统偏好设置 点击“”添加: OK可打印玩耍!! 备注: 若需扫描,下载扫描程序: 备注:…

设置小蓝熊的CPU亲和性、CPU优先级再设置法环的CPU亲和性

# 适用于Windows系统 # 时间 : 2024-06-28 # 作者 : 三巧(https://blog.csdn.net/qq_39124701) # 文件名 : 设置小蓝熊的CPU亲和性、CPU优先级再设置法环的CPU亲和性.ps1 # 使用方法: 打开记事本,将所有代码复制到记事本中,保存文件时候修改文件后…

Hugging Face Accelerate 两个后端的故事:FSDP 与 DeepSpeed

社区中有两个流行的零冗余优化器 (Zero Redundancy Optimizer,ZeRO)算法实现,一个来自DeepSpeed,另一个来自PyTorch。Hugging FaceAccelerate对这两者都进行了集成并通过接口暴露出来,以供最终用户在训练/微调模型时自主选择其中之…

zabbix-server的搭建

zabbix-server的搭建 部署 zabbix 服务端(192.168.99.180) rpm -ivh https://mirrors.aliyun.com/zabbix/zabbix/5.0/rhel/7/x86_64/zabbix-release-5.0-1.el7.noarch.rpm cd /etc/yum.repos.d sed -i s#http://repo.zabbix.com#https://mirrors.aliyun.com/zabbix# zabbix.r…

关于FPGA对 DDR4 (MT40A256M16)的读写控制 4

关于FPGA对 DDR4 (MT40A256M16)的读写控制 4 语言 :Verilg HDL 、VHDL EDA工具:ISE、Vivado、Quartus II 关于FPGA对 DDR4 (MT40A256M16)的读写控制 4一、引言二、DDR4 SDRAM设备中模式寄存器重要的模式寄存…

Arduino - LED 矩阵

Arduino - LED 矩阵 Arduino - LED Matrix LED matrix display, also known as LED display, or dot matrix display, are wide-used. In this tutorial, we are going to learn: LED矩阵显示器,也称为LED显示器,或点阵显示器,应用广泛。在…

“Hello, World!“ 历史由来

布莱恩W.克尼汉(Brian W. Kernighan)—— Unix 和 C 语言背后的巨人 布莱恩W.克尼汉在 1942 年出生在加拿大多伦多,他在普林斯顿大学取得了电气工程的博士学位,2000 年之后取得普林斯顿大学计算机科学的教授教职。 1973 年&#…

C++ | Leetcode C++题解之第203题移除链表元素

题目: 题解: class Solution { public:ListNode* removeElements(ListNode* head, int val) {struct ListNode* dummyHead new ListNode(0, head);struct ListNode* temp dummyHead;while (temp->next ! NULL) {if (temp->next->val val) {…

小柴冲刺软考中级嵌入式系统设计师系列一、计算机系统基础知识(1)嵌入式计算机系统概述

flechazohttps://www.zhihu.com/people/jiu_sheng 小柴冲刺嵌入式系统设计师系列总目录https://blog.csdn.net/qianshang52013/article/details/139975720?spm1001.2014.3001.5501 根据IEEE(国际电气电子工程师协会)的定义,嵌入式系统是&q…

Linux高并发服务器开发(六)线程

文章目录 1. 前言2 线程相关操作3 线程的创建4 进程数据段共享和回收5 线程分离6 线程退出和取消7 线程属性(了解)8 资源竞争9 互斥锁9.1 同步与互斥9.2 互斥锁 10 死锁11 读写锁12 条件变量13 生产者消费者模型14 信号量15 哲学家就餐 1. 前言 进程是C…

哪吒汽车,正在等待“太乙真人”的拯救

文丨刘俊宏 在360创始人、哪吒汽车股东周鸿祎近日连续且着急的“督战”中,哪吒汽车(下简称哪吒)终究还是顶不住了。 6月26日,哪吒通过母公司合众新能源在港交所提交了IPO文件,急迫地希望成为第五家登陆港股的造车新势力…

uniapp中实现瀑布流 短视频页面展示

直接上干货 第一部分为结构 <swiper class"list" :currentindex change"swiperchange" scrolltolower"onReachBottom"><swiper-item style"overflow: scroll;" v-for"(item,index) in 2" :key"index"&g…

DataV大屏组件库

DataV官方文档 DataV组件库基于Vue &#xff08;React版 (opens new window)&#xff09; &#xff0c;主要用于构建大屏&#xff08;全屏&#xff09;数据展示页面即数据可视化&#xff0c;具有多种类型组件可供使用&#xff1a; 源码下载

Golang | Leetcode Golang题解之第204题计数质数

题目&#xff1a; 题解&#xff1a; func countPrimes(n int) int {primes : []int{}isPrime : make([]bool, n)for i : range isPrime {isPrime[i] true}for i : 2; i < n; i {if isPrime[i] {primes append(primes, i)}for _, p : range primes {if i*p > n {break}…

智能交通(1)——杭州交通数据集

赛题简介 在本地赛题中&#xff0c;参赛团队需要在平台提供的仿真交通场景下&#xff0c;通过算法模型驱动交通信号灯&#xff0c;以在各种交通状况&#xff08;高峰期、雨天等&#xff09;下都能最大程度地服务车辆&#xff0c;使其在模拟环境中获得综合最大得分。 数据集 …