redis的持久化

Redis官方提供了两种持久化的方式来将数据存储到硬盘上
快照(Snapshot):保存这一时刻的数据状态
AOF(Append only File):之追加日志文件,将所有的redis写命令记录到日志文件中。

快照持久化

  • 这种方式可以将某一时刻的所有数据写到的硬盘上,当然也是redis默认开启的一种方式,因为生成的文件是.rdb文件,所以又可以叫做rdb方式。

快照的生成方式
1.客户端方式生成:BGSAVE和SAVE
BGSAVE:客户端可以使用这个命令来创建一个快照,放接受客户端BGSAVE时,redis会使用fork来创建一个子线程,子线程用来生成这一时刻的快照写入磁盘中,主线程也还可以接受请求处理请求。

SAVE:在接受SAVE命令时,客户端不会再出口i请求,而是等生成rdb文件时才会处理请求,会造成redis阻塞。

aof持久化

1.特点
这种方式可以将所有的客户端的命令记录代日志文件中,AOF之旧话会被执行的写命令写到AOF文件中,所以只要从头到尾执行一次AOF文件就可以恢复所有的数据
2.AOF持久化的开启
再redis的默认设置中,并没有开启AOF持久化,
在这里插入图片描述
3.日志的追加频率

  • alway(谨慎使用):每个redis写命令都会被写入硬盘中,从而将发生系统崩溃时出现的数据丢失减少到最少,但是对系统硬盘进行大量的操作,所以redis处理命令的速度收到限制。
  • everysec(推荐):没秒执行一次同步显示的将多个命令同步到硬盘中。
  • no(不推荐):由操作系统决定何时同步。
    4.AOF带来的问题
    持久化的文件越来越大,我们条用incr test100次,文件就会保存100次,其中99次多是多余的,为了压缩aof的持久化文件,redis提供了AOF文件重写的操作

执行BGREWRITEAOF 不会阻塞redis服务
在这里插入图片描述
当地一次的AOF文件到达64M时,就会紫红触发一次重写机制,当重写之后的文件达到文件大小的两倍时,会再次触发重写机制。
5,重写机制
AOF的重写机制并不是读取旧的AOF文件,而是用新的文件去替代,
在这里插入图片描述

  • . redis调用fork ,现在有父子两个进程 子进程根据内存中的数据库快照,往临时文件中写入重建数据库状态的命令
  • . 父进程继续处理client请求,除了把写命令写入到原来的aof文件中。同时把收到的写命令缓存起来。这样就能保证如果子进程重写失败的话并不会出问题。
  • . 当子进程把快照内容写入已命令方式写到临时文件中后,子进程发信号通知父进程。然后父进程把缓存的写命令也写入到临时文件。
  • 现在父进程可以使用临时文件替换老的aof文件,并重命名,后面收到的写命令也开始往新的aof文件中追加。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值