持久化-AOF重写概念与命令执行|学习笔记

本文涉及的产品
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
云数据库 Tair(兼容Redis),内存型 2GB
简介: 快速学习持久化-AOF重写概念与命令执行

开发者学堂课程【Redis 入门到精通(进阶篇)持久化-AOF重写概念与命令执行】学习笔记与课程紧密联系,让用户快速学习知识

课程地址https://developer.aliyun.com/learning/course/765/detail/13425


持久化-AOF重写概念与命令执行

 

内容介绍

一、AOF 写数据遇到的问题

二、AOF 重写

三、AOF 重写规则

四、AOF 重写方式

五、进行操作

六、AOF 工作原理

 

一、AOF 写数据遇到的问题

1、如果连续执行如下指令改如何处理?

127.0.0.1:6379>set name zs

127.0.0.1:6379>set name Is

127 0.0.1:6379>set name ww

127.0.0.1:6379>incr num

127.0.0.1:6379>incr num

127.0.0.1:6379>incr num

执行上述六个指令,将上述前三个指令合并成一个 127.0.0.1:6379>set name ww,将后天个指令合并成 127.0.0.1:6379>set num3。可以进行这样的操作,AOF提供重写。

image.png

 

二、AOF 重写

1、AOF 重写

随着命令不断写入 AOF,文件会越来越大,为了解决这个问题,Redis 引入了 AOF 重写机制压缩文件体积。AOF 文件重写是将 Redis 进程内的数据转化为写命令同步到新 AOF 文件的过程。简单说就是将对同一个数据的若干个条命令执行结果转化成最终结果数据对应的指令进行记录。

2、AOF 重写作用

1)、降低磁盘占用量,提高磁盘利用率

2)、提高持久化效率,降低持久化写时间,提高IO性能

3)、降低数据恢复用时,提高数据恢复效率

 

三、AOF 重写规则

1、进程内已超时的数据不再写入文件

2、忽略无效指令,重写时使用进程内数据直接生成,这样新的AOF文件只保留最终数据的写入命令。如del key1、hdel key2、srem key3、set key4111、set key4 222等

3、对同一数据的多条写命令合并为一条命令。如 lpush list1 a. Ipush list1 b、lpush list1c可以转化为: lpushlist1a bc

4、为防止数据量过大造成客户端缓冲区溢出,对 list、set、hash、zset 等类型, 每条指令最多写入64个元素

 

四、AOF 重写方式

1、手动重写

bgrewriteaof(后台重写aof)

2、自动重写

auto-aof- rewrite -min-size size

auto-aof - rewrite-percentage percentage

 

五、进行操作

1、编辑配置文件

[ rootalocalhost data]# ll

total 32

rw-r--r--1 root root 30509 oct 13 20:20 6379.1og

[ root@localhost data]# cd.

[root@localhost redis-4.0.0]# cd conf

[root@localhost conf]# vim redis-6379.conf

2、进入配置文件改成一次一记录模式

appendonly yes

appendfsync always

appendfilename appendonly-6379.aof

3、保存后启动

[root@localhost conf]# redis-server redis-6379.conf

[root@localhost conf]# ps- ef | grep redis-

[root@localhost conf]# clear(清屏)

4、进入data目录下

[root@localhost conf]# cd.

[root@localhost redis-4.0.0]# cd data

[root@localhost data]# 11

total 32

rw-r—r--1 root root 31863 oct 13 20: 24 6379. Log

rw-r--r—1 root root     0 Oct 13 20:24 appendonly- 6379. Aof

[root@localhost data]#

5、右侧客户端进行连接

[root@localhost conf]# redis-cli

127.0.01:6379>set name 123

Ok

127.0.01:6379>

此时左侧服务端有数据

6、继续在右侧执行

127.0.01:6379>set name 234

Ok

127.0.01:6379>set name 345

Ok

127.0.01:6379>

左侧继续执行,此时左边文件的大小有一定容量

7、查看左侧文件

[root@localhost data]# cat appendonly,可具体看到 set name123,setname

234,set name 345。

8、右侧执行重写

127.0.01:6379>bgrewriteaof

Background append only file rewriting started(后台已开始重写)

查看左侧数据,发现变小

9、查看左侧文件

[root@localhost data]# cat appendonly,只看到 set name 345

10、右侧继续执行

127.0.01:6379>lpush list1 a

(integer)1

127.0.01:6379>lpush list1 b

(integer)2

127.0.01:6379>lpush list1 c

(integer)3

127.0.01:6379> del name

(integer)1

127.0.01:6379>

查看左侧文件,文件变大。

 

六、AOF 工作原理

AOF 手动重写——bgrewriteaof 指令工作原理

image.png

相关实践学习
基于Redis实现在线游戏积分排行榜
本场景将介绍如何基于Redis数据库实现在线游戏中的游戏玩家积分排行榜功能。
云数据库 Redis 版使用教程
云数据库Redis版是兼容Redis协议标准的、提供持久化的内存数据库服务,基于高可靠双机热备架构及可无缝扩展的集群架构,满足高读写性能场景及容量需弹性变配的业务需求。 产品详情:https://www.aliyun.com/product/kvstore     ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库 ECS 实例和一台目标数据库 RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
相关文章
|
1月前
|
存储 缓存 NoSQL
大数据-46 Redis 持久化 RDB AOF 配置参数 混合模式 具体原理 触发方式 优点与缺点
大数据-46 Redis 持久化 RDB AOF 配置参数 混合模式 具体原理 触发方式 优点与缺点
56 1
|
3月前
|
NoSQL Redis
Redis AOF重写问题之减少CPU和fork开销如何解决
Redis AOF重写问题之减少CPU和fork开销如何解决
|
3月前
|
缓存 NoSQL Redis
Redis AOF重写问题之正常响应用户命令如何解决
Redis AOF重写问题之正常响应用户命令如何解决
|
3月前
|
NoSQL Redis
Redis AOF重写问题之产生过多INCR AOF文件如何解决
Redis AOF重写问题之产生过多INCR AOF文件如何解决
|
3月前
|
NoSQL 调度 Redis
Redis AOF重写问题之aof_rewrite_buf遗留数据如何解决
Redis AOF重写问题之aof_rewrite_buf遗留数据如何解决
|
缓存 NoSQL Redis
Redis学习笔记-AOF日志&重写机制
Redis学习笔记-AOF日志&重写机制
166 0
|
缓存 NoSQL Redis
Redis(二十六)-持久化操作之AOF
上一篇文章我们介绍了 Redis(二十五)-持久化操作之RDB ,这篇文章接着来介绍另一种持久化的方式AOF。
268 0
Redis(二十六)-持久化操作之AOF
|
缓存 NoSQL Redis
持久化-AOF 重写工作原理|学习笔记
快速学习持久化-AOF 重写工作原理
持久化-AOF 重写工作原理|学习笔记
|
存储 NoSQL Redis
持久化-AOF 自动重写配置|学习笔记
快速学习持久化-AOF 自动重写配置
持久化-AOF 自动重写配置|学习笔记
|
存储 缓存 NoSQL
持久化-AOF 持久化策略基本操作|学习笔记
快速学习持久化-AOF 持久化策略基本操作
持久化-AOF 持久化策略基本操作|学习笔记