redis持久化

本文详细介绍了Redis的持久化机制,包括4.0之前和之后的区别。在4.0之前,AOF和RDB各有不同的持久化策略;4.0后,AOF启用rdb-preamble,每次写操作都记录,且重写时使用RDB格式。重写过程中,全量数据以RDB格式存储,增量数据以明文追加,提高恢复速度。此外,还讨论了自动触发重写策略及其影响。
摘要由CSDN通过智能技术生成

4.0以前版本

1)每一次向redis写数据,aof持久化文件都会进行一次记录(取决于配置文件的flush数据时间长度),但并不一定会产生dump.rdb
2)rdb持久化方式要比aof频率低一些,也是取决于配置文件中配置的条件,当执行save(阻塞执行)或bgsave命令,
就会调用fork()创建子进程并由子进程完成从内存到磁盘的持久化,产生一个rdb文件。
3)当开启了混合体(既开启了rdb又开启了aof持久化),rdb文件的开头会以REDIS字符串开始。
4)rdb文件是一个压缩后的二进制文件,无法直观查看,可以通过 redis-check-rdb dump.rdb 命令来查看rdb文件的一些统计信息。
5)bgrewriteaof :重写aof持久化文件(合并一些冗余的命令)

4.0以后版本

1)开启aof混合 aof-use-rdb-preamble yes.
2)每一次向redis写数据,aof持久化文件都会记录。
3)bgrewriteaof:aof触发重写,此时会将重写前的redis缓存中的数据转成rdb二进制格式存储到aof文件中,减少了CPU的合并等运算过程(即:aof首次触发重写,aof文件会以REDIS字符串开头并且有一些二进制数据)
4)追加:重写后如果再向redis中写数据时,aof文件后面会追加新数据(结构:redis开头+二进制+新的明文数据)
首次重写会将当前的数据直接以二进制压缩的rdb的形式存储到aof文件中。但是此处并不会产生dump.rdb文件,产生rdb文件的时机依然取决于配置文件中配置的rdb策略。
5)这种方式:全量时点数据+增量日志,恢复数据时速度快。
6)如果要生成rdb文件,可以手动执行bgsave。此时会生成当前所有数据的rdb文件。
如果此时再执行bgrewriteaof就会将原来的aof文件(全量时点二进制+增量日志)替换成当前所有数据的rdb格式(aof文件中存入当前时点所有数据的rdb格式的数据),
之后再在后边追加。
比如:
aof文件替换前:
REDIS #¥RBDFGTRY……¥H$#&*(^
set
k1
a
set
k1
b

aof文件替换后:
REDIS #¥RBDFGTRY……¥H$#&(^……#fM&(该文件包含当前所有数据的二进制)

aof自动重写机制

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

首次启动redis的时候,当redis写到64MB,就会触发重写,然后redis会记录当前文件的大小,比如50MB,下次再写到100MB(即50的100%)会触发重写,比如重写后80MB
redis又会记录当前大小,下一次当文件写到160MB时会自动触发重写,以此类推。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值