开发者学堂课程【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提供重写。
二、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,set
name
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 指令工作原理