redis 持久化RDB和 AOF 简述

redis 持久化RDB和 AOF 简述

RDB

Redis DateBase 内存快照

RDB: 把当前进程的数据生成快照保存到本地磁盘的过程(全部数据,相当于全表扫描)

**适用于全表复制,备份 **

命名

save阻塞当前Redis服务,直到RDB过程完成为止,对于内存比较大的实例,效率低。不推荐使用。

bgsaveRedis进程执行fork操作创建子进程,RDB持久化过程由子进程负责,完成后自动结束,阻赛之出现在fork阶段。时间很短

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Ur4oQhKT-1649671568068)(redis 持久化RDB和 AOF 简述.assets/image-20220411130425062.png)]

自动触发

  • redis.conf中配置save…
  • 主从复制时,从节点进行全量复制时也会触发bgsave,生成当时的快照发送到从节点
  • 执行debug reload 命令重新加载redis时
  • 默认执行 shutdown命令,没开启AOF 时,触发bgsave

redis.conf

# 900秒内 1个key 变化,进行快照 
save 900 1
# 300秒内 10个key 变化,进行快照
save 300 10

# 关闭快照
save ""

配置项说明
dbfilenameRDB文件的名称
dirrdb 文件储存路径
stop-wrifes-on-bgsave-error持久化出错,是否停止写入
yes/no
rdbcompression字符串写入磁盘时,是否启用LZF压缩算法
yes/no
rdbchecksum导入检查 牺牲10% 作用的性能提高RDB文件的完整性

AOF

写后日志,执行完成的命令做记录。

命令可正常执行,记录在每次操作之后,非阻塞

配置项回写时机有点缺点
Always同步写回可靠性高,每条数据都做记录磁盘开销大,影响性能
Everysec每秒写回性能适中宕机时丢失1秒内数据
No操作系统控制写回性能好不可控,宕机丢失数据较多

redis.conf配置

配置项说明
appendonly开启AOF 持久化
appendfilename持久化文件名称
dir文件存放路径
appendfsync同步策略
always、everysec、no
no-appendfsync-on-rewriteaof重写期间是否同步
auto-aof-rewrite-percentage重写触发 倍率
例如上次重写完 1MB,这次就是2MB重写
auto-aof-rewrite-min-size重写 最小值

重写简单说明

redis 创建一个新的aof 文件替换现有的aof,会去掉 冗余命令,无效命令

重写是由后台进程 bgrewriteaof 来完成,主线程fork出后台的bgrewriteaof 子进程,fork会把主线程的内存拷贝一份给bgrewriteaof子进程

重写日志时,新的写入数据

子进程完成日志文件重写后,会提示主线程完成重写操作,主线程会将AOF重写缓存中的命令,追加到最新的日志文件后面

在高并发的时候的,aof重写的缓存区积累 会很大,这样会造成阻塞

主线程在重写过程中的阻赛

  1. fork 子进程,拷贝虚拟页表
  2. 主进程bigkey 写入时,操作系统会创建页面的副本,并拷贝原有数据
  3. 子进程重写日志完成后,主进程追加aof重写缓冲区时

RDB 和AOF 混合方式

redis4.0 开始
内存快照以一定频率之行,在两次快照之间,使用AOF日志记录这期间所有命令操作

底部

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值