Redis持久化机制

大家好!大勇来了,今天继续分享的是Redis中的两种持久化机制…


持久化机制

Redis中有两种持久化机制,分别是RDB和AOF两种方式,在Redis4.0之后,还出现了RDB和AOF混合使用的持久化机制。

RDB

RDB(Redis Database Backup) 称为数据快照,把内存中的数据记录到磁盘。

RDB是将这个数据文件保存到dump.rdb,RDB持久化包括手动触发和自动触发。

在redis.conf中可以配置Redis自动化持久化的策略。

自动触发策略:

save m n

在m秒发生n次修改,会自动触发bgsave

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-91ZwrgkF-1677059069106)(C:\Users\DY\AppData\Roaming\marktext\images\2023-02-22-14-47-08-image.png)]

我们可以通过save和bgsave来手动触发RDB持久化。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-OqlmQz4K-1677059069107)(C:\Users\DY\AppData\Roaming\marktext\images\2023-02-22-15-00-55-image.png)]

  • save命令:会阻塞当前的Redis服务器,直到RDB过程完成,对于内存比较大的会造成长时间阻塞。

  • bgsave命令:Redis主进程会执行fork操作创建子进程,RDB持久化过程由子进程负责,阻塞只会发生在创建子进程时,比save更快。

AOF

AOF全称为Append Only File(追加文件)。Redis处理的每一个写命令都会记录在AOF文件,在固定时间会进行压缩。

AOF配置:

  • 可以通过redis.conf中的appendonly 来配置是否开启AOF功能

  • appendfsync可以配置刷盘策略,Always、everysec、no

AOF可能会出现对一个key有多次写操作,但是只有只有最后一次写操作才有意义。

bgrewriteaof命令会重写,可以用最少的命令达到相同的效果

RDB和AOF的优缺点:

RDB-优点:

  • rdb文件适合全量备份,方便持久化

  • 恢复速度快,RDB恢复数据的速度快

  • 容灾性好,可以把RDB文件拷贝道远程机器或者文件系统,用于容灾恢复

RDB-缺点:

  • 实时性低,执行间隔时间长,没有办法做到实时持久化,有可能发生数据丢失

  • fork子进程、写文件比较耗时

AOF-优点:

  • 实时性好,AOF持久化可以配置每进行一次命令操作就记录到AOF文件中一次

  • 通过追加append模式写文件,解决数据一致性问题。

AOF-缺点:

  • AOF文件比RDB文件大,且恢复速度慢

  • 数据集大的时候,比RDB启动效率低

混合持久化

在重启Redis时,使用RDB恢复内存状态,可能会丢失大量数据,通过AOF日志可能性能要慢很多,重启需要花费很长的时间。

Redis4.0为解决这个问题提出了混合持久化,将rdb文件的内容和增量的AOF日志文件存放在一起,混合持久化时发生于AOF重写过程中,这里的AOF日志不在是全量日志,而是自持久化开始到持久化结束的这段时间发生的增量AOF日志。

于是Redis在重启的时候,可以先加载rdb内容,再加载增量AOF日志就可以完成替代之前的AOF全量文件重放,所以效率会大幅度提升。

可以通过配置aof-use-rdb-preamble 来开启混合持久化,在Redis5已经是默认开启了,设置为no即可以关闭

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值