Redis数据持久化策略之快照机制(RDB)

Redis我们通常用来作为缓存来用,减少服务器数据库的压力,也有用Redis作为数据库来用的,效率肯定比关系型数据库效率高很多。

当用Redis来存储数据时,我们都要考虑Redis意外宕机怎么办,因为一旦Redis挂掉,我们上面存储的数据都会丢失,大量的请求会直接访问我们的数据库,这样的后果是很严重的。

这就要介绍Redis的持久化机制,我们首先讲第一种快照机制(RDB),持久化就是我们把Redis的数据生成RDB文件永久保存在磁盘上,当Redis停止服务时,数据还可以存储起来,服务重启后,还可以重新把磁盘上面的数据重新读取出来。

生成快照文件(RDB)可以用命令SAVEBGSAVE,其中SAVE是同步的,因为Redis是单线程的(6.0以后是多线程了),所以其他任何请求都会阻塞,直到持久化完成。另外一个是异步的,Redis会调用glibc的函数fork产生一个子进程,父进程正常处理请求,子进程负责持久化。

因为SAVE是同步的,在Redis执行SAVE命令时,任何命令都不会执行,但是BGSAVE是异步的,如果我们在执行BGSAVE的时候在输入执行SAVE命令时,Redis会拒绝,因为如果执行的话,父进程和子进程会都去产生RDB文件。

如果在执行BGSAVE命令,用户再次发出执行BGSAVE命令,Redis同样也会拒绝。

RDB文件的载入没有命令,它是在Redis启动以后就开始读取,如果我们同时采用快照机制和AOF日志,redis会觉得AOF持久化效率高,默认使用AOF来还原数据,不读取RDB文件。
我们打开Redis的.conf文件,会看到默认配置。
![在这里插入图片描述](https://img-blog.csdnimg.cn/20201127205910698.png

当Redis启动时,它会读取我们的配置,然后根据配置设置redisServer的saveparams属性,
在这里插入图片描述

saveParams是一个数组,里面存储的是我们设置的条件,Redis会每隔100ms执行一次saveCron,循环遍历saveParams数组,只要有一个条件满足,就执行BGSAVE命令。

好的以上就是对快照机制的简单介绍,如果想要更加深入了解话,推荐阅读《Redis的设计与实现》。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

农业路

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

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

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

打赏作者

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

抵扣说明:

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

余额充值