redis 学习(18)-- AOF
redis -- AOF
什么是 AOF
通过日志方式将redis中的写命令进行日志记录,保存在硬盘文件中。
日志记录的实质是将写命令写在硬盘的缓冲区中,再根据相关策略把数据刷新到磁盘中。
当redis服务器启动时候,执行硬盘中的日志文件以恢复redis中的数据。
AOF 运行原理 - 创建
AOF 运行原理 - 恢复
AOF 的三种策略
1. always
含义:执行每条写命令都会将写命令写到磁盘中
2. everysec
含义:每秒将数据从缓冲区刷到磁盘中,可能会丢失一秒的数据(redis 默认使用该策略)
3. no
含义:写命令何时刷新的磁盘中,由操作系统来决定
AOF 重写
注意这里的重写并不是说将 redis 命令重新抽象成新的 redis 命令,再写入 AOF 文件,而是执行 redis 命令后将内存中的数据进行回溯,重写成 AOF 文件。
1. 重写的作用
- 减少磁盘占用
- 加速AOF恢复速度
- 例如一万次incr key 可以重写为
set key 10000
- 例如一万次incr key 可以重写为
2. AOF 重写实现方式 - bgrewriteaof
客户端发送出一条bgrewriteaof命令后,redis会fork一个子进程完成AOF重写操作逻辑。
3. AOP 重写实现方式 - AOF 重写配置
- AOF配置项
配置 | 默认值 | 含义 |
---|---|---|
auto-aof-rewrite-min-size | 64MB | AOF文件重写需要的尺寸,AOF多大时开启重写 |
auto-aof-rewrite-percentage | 100 | AOF文件增长率 (当前AOF文件大小超过上一次重写的AOF 文件大小的百分之多少才会重写) |
AOF统计项
统计名 含义 aof_current_size AOF当前尺寸(单位:字节) aof_base_size AOF上次启动和重写的尺寸(单位:字节) 自动触发时机
- 当前 AOF 文件大小超过最小重写尺寸
- 当前 AOF 文件大小超过上次重写完的 AOF 尺寸的百分之多少(auto-aof-rewrite-percentage)
aof_current_size > auto-aof-rewrite-min-size
(aof_current_size - aof_base_size) / aof_base_size > auto-aof-rewrite-percentage
AOF 相关配置
配置项 | 最佳取值 | 含义 |
---|---|---|
appendonly | yes | 开启AOF |
appendfilename | aof-${port}.aof | AOF文件名 |
appendfsync | everysec | AOF策略 |
dir | /redisDataPath | AOF文件所在目录 |
no-appendfsync-no-rewrite | yes | 在执行重写时不进行AOF操作 |
auto-aof-rewrite-percentage | 100 | AOF重写配置(见上文) |
auto-aof-rewrite-min-size | 64MB | AOF重写配置(见上文) |
AOF 重写原理
AOF重写不会读取老的AOF文件,而是根据当前服务器的状态生成一份新的AOF文件,将老的AOF文件进行替换。
AOF 重写流程
演示
redis 支持动态配置,我们开启 AOF,其他配置保持不变。
conf set appendonly yes
我们添加几个数据:
在 /opt/soft/redis/data/
目录下查看,可以看到,AOF 文件已经生成了,使用 more
命令查看 aof 文件:
看得不太清楚,我们用 head
命令打印 aof 文件头部信息:
使用重写命令:
我们使用 dbszie
重新查看一下数据大小,可以看到文件非常小,只有三个 key:
打印一下重写后的 appendonly.aof :
可以看到重写后的命令变成了:
seletc 0
set counter 2
set counter redis
rpush list a b c
redis 学习(18)-- AOF的更多相关文章
- Redis学习——Redis持久化之AOF备份方式保存数据
新技术的出现一定是在老技术的基础之上,并且完善了老技术的某一些不足的地方,新技术和老技术就如同JAVA中的继承关系.子类(新技术)比父类(老技术)更加的强大! 在前面介绍了Redis学习--Redis ...
- Redis学习笔记六:持久化实验(AOF,RDB)
作者:Grey 原文地址:Redis学习笔记六:持久化实验(AOF,RDB) Redis几种持久化方案介绍和对比 AOF方式:https://blog.csdn.net/ctwctw/article/ ...
- 峰Redis学习(8)Redis 持久化AOF方式
第三节:Redis 的持久化之AOF 方式 AOF方式:将以日志,记录每一个操作 优势:安全性相对RDB方式高很多: 劣势:效率相对RDB方式低很多: 1)AOF方式需要配置: # Please ...
- 【Redis】Redis学习(七) Redis 持久化之RDB和AOF
Redis 持久化提供了多种不同级别的持久化方式:一种是RDB,另一种是AOF. RDB 持久化可以在指定的时间间隔内生成数据集的时间点快照(point-in-time snapshot). AOF ...
- redis学习(四)redis持久化之RDB、AOF
redis是内存数据库,它把数据存储在内存中,这样在加快读取速度的同时也对数据安全性产生了新的问题,即当redis所在服务器发生宕机后,redis数据库里的所有数据将会全部丢失.为了解决这个问题,re ...
- Redis 学习笔记(四)RDB 和 AOF 持久化机制
一.Redis 持久化简介 Redis 的持久化功能是区别于 Memcached 显著特性,数据持久化可以保证系统在发生宕机和重启后数据不会丢失,对于 redis 这种存储在内存中的数据库显得尤为重要 ...
- Redis学习手册(目录)
为什么自己当初要选择Redis作为数据存储解决方案中的一员呢?现在能想到的原因主要有三.其一,Redis不仅性能高效,而且完全免费.其二,是基于C/C++开发的服务器,这里应该有一定的感情因素吧.最后 ...
- Redis——学习之路三(初识redis config配置)
我们先看看config 默认情况下系统是怎么配置的.在命令行中输入 config get *(如图) 默认情况下有61配置信息,每一个命令占两行,第一行为配置名称信息,第二行为配置的具体信息. ...
- Redis学习手册——转载
转载出处:http://www.cnblogs.com/stephen-liu74/archive/2012/04/16/2370212.html 为什么自己当初要选择Redis作为数据存储解决方案中 ...
- Redis学习手册
为什么自己当初要选择Redis作为数据存储解决方案中的一员呢?现在能想到的原因主要有三.其一,Redis不仅性能高效,而且完全免费.其二,是基于C/C++开发的服务器,这里应该有一定的感情因素吧.最后 ...
随机推荐
- redis慢查询笔记
慢查询 生命周期 两个配置 三个命令 运维经验 生命周期 1.发送命令 2,排队执行命令因为单线程 3.执行命令 4.返回结果 慢查询发生在第三阶段 客户端超时并不一定有慢查询,但慢查询是客户端超时的 ...
- mysql主从复制原理及步骤
原理: 1master开启bin-log功能,日志文件用于记录数据库的读写增删2需要开启3个线程,master IO线程,slave开启 IO线程 SQL线程,3Slave 通过IO线程连接maste ...
- R语言:as.Date出现NA值
> head(as.Date(data$日期,'%y%M%D'))[1] NA NA NA NA NA NA data日期格式如下: 解决办法: > head(as.Date(data$日 ...
- 2.1 Go语言基础之运算符
运算符用于在程序运行时执行数学或逻辑运算. 一.运算符 Go 语言内置的运算符有: 1. 算术运算符 2. 关系运算符 3. 逻辑运算符 4. 位运算符 5. 赋值运算符 1.1 算数运算符 运算符 ...
- 使用git send-email发送邮件时报错: Unable to initialize SMTP properly怎么处理?
答: 配置~/.gitconfig中的smtpserver 需往~/.gitconfig中添加如下内容: [sendemail] smtpserver = <stmp_server_name ...
- mha之vip漂移 配置binlog-server备份服务器 Atlas
MHAvip漂移 配置 通过MHA自带脚本方式,管理虚拟IP的漂移 获取管理脚本master_ip_failover cp master_ip_failover /usr/local/bin/ #脚本 ...
- Git 解决冲突(3步)
今天新人从master分支合并到自己开发分支时有冲突了,不知道怎么解决,给他解决后,顺便简单记下,免得其他人问时还要再讲一遍 1.先切到自己的分支,拉下代码 git pull 2.向某个分支发起合并 ...
- 【转】实现1080P延迟低于500ms的实时超清直播传输技术
最近由于公司业务关系,需要一个在公网上能实时互动超清视频的架构和技术方案.众所周知,视频直播用 CDN + RTMP 就可以满足绝大部分视频直播业务,我们也接触了和测试了几家 CDN 提供的方案,单人 ...
- 【C# in depth 第三版】温故而知新(1) (转)
声明 本文欢迎转载,原文地址:http://www.cnblogs.com/DjlNet/p/7192354.html 前言 关于这本书(<深入理解C# 第三版>)的详细情况以及好坏,自行 ...
- playbook部署coredns
playbook部署coredns 说明test1是主控节点,目的是给test4 node节点安装coredns, 1.coredns-1.2.2.tar.gz安装包放到主控节点/server/sof ...