Redis持久化之AOF

先说明一下相关的配置

#redis日志文件
logfile "/usr/local/redis/log/redis.log"
#是否开启aof
appendonly yes
#aof文件名称
appendfilename "appendonly.aof"
#每一条命令都追加到aof文件
# appendfsync always
#每分钟追加一次到aof文件
appendfsync everysec
#根据操作系统确定什么时候追加到aof文件(不可控) 
# appendfsync no
#aof重写的时候是否不追加到aof
no-appendfsync-on-rewrite no
#aof自动重写的增长率(简单说就是上一次自动重写的大小比如是90M,那么100就代表下次重写会在180M的时候重写)
auto-aof-rewrite-percentage 100
#aof自动重写的最小尺寸(大小)
auto-aof-rewrite-min-size 64mb
#redis在使用aof恢复时是否忽略错误,如果为no发现错误就会停止,必须修复后才能重新加载。
aof-load-truncated yes
#是否开启rdb-aof混合持久化方式,Redis4.0 以上才有的功能
aof-use-rdb-preamble no
#aof文件存放的路径
dir /usr/local/redis/data/

生成aof文件

在开启  appendonly yes 的时候启动 redis时就会生成aof 文件,然后根据配置的策略 

这里我配置的是appendfsync everysec  每秒写入aof

查看一下 aof文件

vim /usr/local/redis/data/appendonly.aof
*2
$6
SELECT
$1
0
*3  //*3 代表该命令有3个参数 set name hello 总共3个参数
$3  //$3 代表该参数有3个字符 set 就是3个字符
set
$4
name
$5
hello
*3
$3
set
$4
name
$4
test
*2
$4
incr
$3
num
*2
$4
incr
$3
num
*2
$4
incr
$3
num
*3
$5
lpush
$5
queue
$1
1
*3
$5
lpush
$5
queue
$1
2
*3
$5
lpush
$5
queue
$1
3

可以看到,每隔一秒就会写入执行的命令。

也可以看到该文件有很多无效数据,有的数据也可以简化

接来下我们通过bgrewriteaof命令去重写 aof 文件

通过日志文件可以看出重写成功

再来打开aof文件看一看

*2
$6
SELECT
$1
0
*5
$5
RPUSH
$5
queue
$1
3
$1
2
$1
1
*3
$3
SET
$3
num
$1
3
*3
$3
SET
$4
name
$4
test

可以看到 简化了很多。比如 name 最终的值是test ,那么 set name hello 这条就没了,

lpush queue 1

lpush queue 2

lpush queue 3

这三条命令也简化成 rpush queue 3 2 1 这一条命令了

 

自动重写就会根据配置

auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb

去完成自动重写aof

aof重写跟rdb的bgsave一样 都会启动一个子进程去完成对应的文件写入

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值