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

简介: 快速学习持久化-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

相关文章
|
C# 容器
C#中的命名空间与程序集管理
在C#编程中,`命名空间`和`程序集`是组织代码的关键概念,有助于提高代码的可维护性和复用性。本文从基础入手,详细解释了命名空间的逻辑组织方式及其基本语法,展示了如何使用`using`指令访问其他命名空间中的类型,并提供了常见问题的解决方案。接着介绍了程序集这一.NET框架的基本单位,包括其创建、引用及高级特性如强名称和延迟加载等。通过具体示例,展示了如何创建和使用自定义程序集,并提出了针对版本不匹配和性能问题的有效策略。理解并善用这些概念,能显著提升开发效率和代码质量。
474 4
|
3天前
|
数据采集 人工智能 安全
|
12天前
|
云安全 监控 安全
|
4天前
|
自然语言处理 API
万相 Wan2.6 全新升级发布!人人都能当导演的时代来了
通义万相2.6全新升级,支持文生图、图生视频、文生视频,打造电影级创作体验。智能分镜、角色扮演、音画同步,让创意一键成片,大众也能轻松制作高质量短视频。
1064 151
|
4天前
|
编解码 人工智能 机器人
通义万相2.6,模型使用指南
智能分镜 | 多镜头叙事 | 支持15秒视频生成 | 高品质声音生成 | 多人稳定对话
|
17天前
|
机器学习/深度学习 人工智能 自然语言处理
Z-Image:冲击体验上限的下一代图像生成模型
通义实验室推出全新文生图模型Z-Image,以6B参数实现“快、稳、轻、准”突破。Turbo版本仅需8步亚秒级生成,支持16GB显存设备,中英双语理解与文字渲染尤为出色,真实感和美学表现媲美国际顶尖模型,被誉为“最值得关注的开源生图模型之一”。
1739 9
|
9天前
|
人工智能 自然语言处理 API
一句话生成拓扑图!AI+Draw.io 封神开源组合,工具让你的效率爆炸
一句话生成拓扑图!next-ai-draw-io 结合 AI 与 Draw.io,通过自然语言秒出架构图,支持私有部署、免费大模型接口,彻底解放生产力,绘图效率直接爆炸。
685 152
|
11天前
|
人工智能 安全 前端开发
AgentScope Java v1.0 发布,让 Java 开发者轻松构建企业级 Agentic 应用
AgentScope 重磅发布 Java 版本,拥抱企业开发主流技术栈。
653 12