当前位置:网站首页>Redis如何实现持久化?详细讲解AOF触发机制及其优缺点,带你快速掌握AOF
Redis如何实现持久化?详细讲解AOF触发机制及其优缺点,带你快速掌握AOF
2022-07-26 03:47:00 【我是一棵卷心菜】
大家好,我是卷心菜。本篇主要讲解Redis持久化的AOF方式,如果您看完文章有所收获,可以三连支持博主哦~,嘻嘻。
一、前言
- 上一篇文章已经讲解了Redis实现持久化的RDB方式,抛开优点来说,RDB的存储数据量较大,效率较低、大数据量下的IO性能较低、内存产生额外消耗、宕机带来的数据丢失风险等等,那么如何解决这种问题呢?
思路:不写全数据,仅记录部分数据、降低区分数据是否改变的难度,改记录数据为记录操作过程、对所有操作均进行记录,排除丢失数据的风险
二、AOF概念
AOF(append only file)持久化:以独立日志的方式记录每次写命令,重启时再重新执行AOF文件中命令达到恢复数据的目的。与RDB相比可以简单描述为改记录数据为记录数据产生的过程- AOF的主要作用是解决了数据持久化的实时性,目前已经是Redis持久化的主流方式

三、AOF配置
appendonly yes|no:是否开启AOF持久化功能,默认为不开启状态appendfsync always|everysec|no:AOF写数据策略appendfilename filename:AOF持久化文件名,默认文件名为appendonly.aof,建议配置为appendonly-端口号.aofdir:AOF持久化文件保存路径,与RDB持久化文件保持一致即可
四、AOF三种策略
always(每次)
每次写入操作均同步到AOF文件中,数据零误差,性能较低,不建议使用。everysec(每秒)
每秒将缓冲区中的指令同步到AOF文件中,数据准确性较高,性能较高,建议使用,也是默认配置
在系统突然宕机的情况下丢失1秒内的数据no(系统控制)
由操作系统控制每次同步到AOF文件的周期,整体过程不可控
| 命令 | always | everysec | no |
|---|---|---|---|
| 优点 | 不丢失数据 | 每秒一次fsync丢1秒数据 | 不用管 |
| 缺点 | IO开销较大 | 丢1秒数据 | 比可控 |
五、AOF重写
为什么要重写:随着命令不断写入AOF,文件会越来越大,为了解决这个问题,Redis引入了AOF重写机制压缩文件体积。如何重写:AOF文件重写是将Redis进程内的数据转化为写命令同步到新AOF文件的过程。简单说就是将对同一个数据的若干个条命令执行结果转化成最终结果数据对应的指令进行记录。
1、触发机制
1.1、手动触发
直接调用bgrewriteaof指令
127.0.0.1:6379> bgrewriteaof
Background append only file rewriting started
1.2、自动触发
根据redis.conf配置文件中的auto-aof-rewrite-min-size和auto-aof-rewrite-percentage参数确定自动触发时机
auto-aof-rewrite-min-size
表示运行AOF重写时文件最小体积,默认为64MB
auto-aof-rewrite-percentage
代表当前AOF文件空间(aof_current_size)和上一次重写后AOF文件空间(aof_base_size)的值
2、执行流程

六、AOF优缺点
优点:
AOF可以更好的保护数据不丢失
AOF日志文件没有任何磁盘寻址的开销,写入性能非常高,文件不容易破损。
AOF日志文件即使过大的时候,出现后台重写操作,也不会影响客户端的读写。缺点:
AOF方式生成的日志文件太大,需要不断AOF重写,进行瘦身,即使经过AOF重写瘦身,由于文件是文本文件,文件体积还是较大(相比于RDB的二进制文件)
AOF重演命令式的恢复数据,速度显然比RDB要慢。
七、RDB与AOF的区别
| 持久化方式 | RDB | AOF |
|---|---|---|
| 占用存储空间 | 小 | 大 |
| 存储速度 | 慢 | 快 |
| 恢复速度 | 快 | 慢 |
| 数据安全性 | 会丢失数据 | 依据策略决定 |
| 资源消耗 | 高 | 低 |
| 启动优先级 | 低 | 高 |
感谢阅读,一起进步,嘻嘻~
边栏推荐
- Basic line chart: the most intuitive presentation of data trends and changes
- Mbr3045ct Schottky diode, mbr0100, mbr2060ct diode parameters
- 【云原生之kubernetes】kubernetes集群下ConfigMap使用方法
- 6-40v input fixed 5V 3.3V output 1.1a current 23-5 package
- cpu和gpu已过时,npu和apu的时代开始
- 9-20v input peak charging current 3A dual lithium switch type charging chip sc7102
- 安装VMware报错failed to install the hcmon driver
- 文件上传报错:Current request is not a multipart request
- 2020 AF-RCNN: An anchor-free convolutional neural network for multi-categoriesagricultural pest det
- Course selection information management system based on SSM
猜你喜欢

Zkevm: summary of zkevm and L1 by Mina's CEO

The B2B2C multi merchant system has rich functions and is very easy to open

Visio:甘特图如何合并单元格?解决方案:覆盖单元格

Failed to install the hcmon driver

Kbpc1510-asemi large chip 15A rectifier bridge kbpc1510

Graduation season & harvest season, leave your beautiful moments

Bing(必应)搜索,为什么用户越来越多?

UFS Clk Gate介绍

触觉智能分享-RK3568在景区导览机器人中的应用

cpu和gpu已过时,npu和apu的时代开始
随机推荐
用GaussDB(for Redis)存画像,推荐业务轻松降本60%
【单片机仿真项目】外部中断0控制8个发光二极管闪烁
UDP和TCP可以使用同一个端口吗?
div设置高度不生效
day03_ 1_ Idea tutorial
Hcip day 14
想要做好软件测试,可以先了解AST、SCA和渗透测试
基于JSP实现网上商城系统
网络模型及协议
leetcode-462.最少移动次数使数组元素相等
Dtcloud the next day
[unity3d shader] character projection and reflection
Dracoo Master天龙卡牌大师
What are you interviewing for in a big factory? It's worth watching (I)
6-40v input fixed 5V 3.3V output 1.1a current 23-5 package
测试工作不受重视?学长:你应该换位思考
Tf.constant usage
PHP <=> 太空船运算符(组合比较符)
The B2B2C multi merchant system has rich functions and is very easy to open
PHP连接mysql数据库,数据库连接静态工具类,简化连接。