细说redis持久化流程

一. 概述redis持久化的俩种模式

随着redis越来越流行,使用者不在仅仅满足其只是一个内存数据库,同时也期望其能将内存数据落磁盘,这样重启服务就不会导致缓存数据丢失了

redis持久化有俩种模式模式,分别如下:

持久化模式 说明 优点 缺点
rdb模式 定期将redis当前内存数据快照备份到硬盘 redis重启时恢复速度快 由于备份不宜频繁,会导致系统异常宕机时,redis大量数据丢失
aof模式 将redis执行的命令每隔1s批量同步到文件中 机器异常宕机时,最多丢失1s数据 由于保存的是命令,会导致保存很多赘余数据,文件过大(这时候恢复起来相对rdb会慢很多)

二. rdb持久化模式

1.rdb持久化核心思路

获取当前内存快照并将快照数据保存到磁盘实现当前数据全量备份

2.rdb持久化难点

(1)如何获取当前内存数据快照
redis利用linux fork子进程后( cow机制:https://juejin.im/post/5bd96bcaf265da396b72f855 )子进程拥有父进程的内存快照来获取内存快照
(2)保存数据落盘时io操作阻塞其他请求
redis rdb持久化落盘操作只在独立的子进程中进行不会影响到主进程中的其他请求

3.rdb持久化后rdb文件的格式

(1)redis rdb文件整体格式如图1所示

  • 开头为固定的REDIS 5个字符,标示这是一个redis rdb文件
  • 5.0.0标示保存改rdb文件的redis服务为5.0.0版本
  • 64标示保存rdb文件的redis所在机器为64位机
  • 1554103539为该rdb文件的创建时间
  • 23343563为该rdb内存快照需占用内存大小
  • 接着保存的为复制相关标示和数据库数据(见图2)
  • EOF标志代表rdb文件结尾
  • 63562735845846756为rdb完整性检查的校验和

图1

(2)redis database在rdb文件中的整体格式如图2所示

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值