Redis学习(三) —— 持久化

一、两个问题

  • 为什么要持久化
  • 如何持久化
1.1 为什么要持久化?

因为Redis数据存在内存,若服务器宕机或重启,数据会全部丢失,需要有一种机制保证数据不会因为故障丢失。

Redis是单线程的,而持久化就是说Redis需要将线程用到保存数据到磁盘,并且还要服务客户端的请求,持久化的IO会严重影响性能。

那么Redis是如何解决的?

这里Redis使用了操作系统的 写时复制(Copy On Write)。也就是从原先处理客户端请求的进程中,fork出一个子进程,来进行持久化。

1.2 如何持久化?
  • 快照
  • AOF日志

二、Copy On Write

fork()函数

父进程执行fork()后,会产生一个子进程。当fork()被调用的时候,会返回两个值。

为什么返回两个值?
因为是两个线程,返回给父线程,子线程的ID;返回给子线程,0。

exec()函数

exec的作用是,替换当前进程的内存空间的映像,从而执行不同的任务。

也就是说,当子进程执行exec后,就不再是父进程的副本了,因为有了独立的内存空间。

Copy On Write

参考文档

[1]: Redis官方文档 持久化(persistence)
[2]: 一个经典面试题:如何保证缓存与数据库的双写一致性?
[3]: 你的Redis怎么持久化的
[4]: COW奶牛!Copy On Write机制了解一下
[5]: 10分钟彻底理解Redis的持久化机制:RDB和AOF

转载于:https://www.cnblogs.com/fonxian/p/10931979.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值