Redis持久化(RDB、AOF)

一、RDB

RDB:Redis数据备份文件,也叫Redis数据快照,简单来说就是把内存数据保存的磁盘上,当Redis故障重启后,从磁盘中读取快照并恢复数据到Redis中。

RDB有两种启动命令:

  • save:由Redis主进程执行RDB操作,过程中会阻塞其它所有命令。(不推荐)
  • bgsave:fork一个子进程异步执行RDB,主进程只在fork过程中阻塞,后续不受影响。

同时,Redis会在停机时自动进行一次RDB操作(主动停机,不是宕机) 

也可以在redis.conf文件下配置触发规则

save 900 1
– 表示在900秒内,redis中有1个key发生改变,那么就进行一次bgsave
save 300 10
– 表示在300秒内,redis中有1个key发生改变,那么就进行一次bgsave
save 60 10000
– 表示在60秒内,redis中有10000个key发生改变,那么就进行一次bgsave

其余规则也可以在该文件下配置

 总结一下RDB三种触发方式

  1. 主动停机后自动触发
  2. 手动执行save/bgsave命令
  3. 在redis.conf文件下自行配置触发规则   

RDB优点和缺点 

优点:RDB文件是一个紧凑的二进制压缩文件,是Redis在某个时间点的全部数据快照。所以使用RDB恢复数据的速度远远比AOF的快,非常适合备份、全量复制、灾难恢复等场景。 

缺点:每次进行bgsave操作都要执行fork操作创建子经常,属于重量级操作,频繁执行成本过高,两次RDB快照之前可能丢失数据,所以无法做到实时持久化,或者秒级持久化。 


二、AOF 

AOF:AOF全称Append Only File(追加文件)。Redis处理的每一个写命令都会记录在AOF文件里,可以看成是命令日志文件。

AOF是默认关闭的,需要修改redis.conf文件开启AOF

AOF也可以通过配置,修改记录命令的频率

  • always:每写一次,立即记录到AOF文件
  • everysec:每写一次,先放入AOF缓冲区,然后每隔一秒从缓冲区写入AOF文件
  • no:没写一次,先放入AOF缓冲区,由系统决定何时将缓冲区内容写入磁盘 

因为AOF是记录命令的对比RDB的二进制文件,文件体积会大的多。而且AOF会对同一个key的多次写操作记录,但是我们都知道只有最后一次写操作才是有意义的。因此AOF可以用过bgrewriteaof 命令,让AOF文件重写,压缩文件体积。

 

 

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

白日日白

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值