细说redis持久化流程

本文详细介绍了Redis的两种持久化方式:RDB和AOF。RDB通过创建内存快照实现全量备份,AOF则记录更新命令。RDB在恢复时更快,但可能丢失更多数据;AOF文件可能庞大,但数据安全性更高,且通过定期重写可减少冗余。选择合适的方式取决于业务需求。
摘要由CSDN通过智能技术生成

一. 概述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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值