Redis 的学习笔记 16 原理剖析

1. Redis 为啥需要持久化

1)Redis是内存数据库,宕机后数据会消失。

2)Redis重启后快速恢复数据,要提供持久化机制 Redis持久化是为了快速的恢复数据而不是为了存储数据 。

3)Redis有两种持久化方式:RDB和AOF

注意:Redis持久化不保证数据的完整性。 当Redis用作DB时,DB数据要完整,所以一定要有一个完整的数据源(文件、mysql) 在系统启动时,从这个完整的数据源中将数据load到Redis中 数据量较小,不易改变,比如:字典库(xml、Table)

2. RDB 简单介绍

RDB(Redis DataBase)

1)是redis默认的存储方式,RDB方式是通过快照( snapshotting )完成的。这一刻的数据 不关注过程

2)触发快照的方式

符合自定义配置的快照规则

执行save或者bgsave命令

执行flushall命令

执行主从复制操作 (第一次)

RDB 执行流程

1.Redis父进程首先判断:当前是否在执行save,或bgsave/bgrewriteaof(aof文件重写命令)的子 进程,如果在执行则bgsave命令直接返回。

2. 父进程执行fork(调用OS函数复制主进程)操作创建子进程,这个复制过程中父进程是阻塞的, Redis不能执行来自客户端的任何命令。

3. 父进程fork后,bgsave命令返回”Background saving started”信息并不再阻塞父进程,并可以响 应其他命令。

4. 子进程创建RDB文件,根据父进程内存快照生成临时快照文件,完成后对原有文件进行原子替换。 (RDB始终完整)

5. 子进程发送信号给父进程表示完成,父进程更新统计信息。

6. 父进程fork子进程后,继续工作。

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值