Redis的写时复制(Copy On Write),你真的了解么?
创始人
2025-05-31 15:05:13
0

首先,我们都知道 Redis 可以做一个纯内存的键值存储系统,但是我们也会用到它的持久化功能,RDB 和 AOF 就是 Redis 为我们提供的两种持久化工具:RDB做镜像全量持久化,AOF做增量持久化

RDB:指定的时间间隔内将内存的数据集快照写入磁盘

Redis 的配置文件可以对快照的间隔进行设置,Redis 客户端还同时提供SAVE 和 BGSAVE两个命令来生成 RDB 存储文件
1:SAVE 命令在执行时会直接阻塞当前的线程
2:BGSAVE 命令时,Redis 会立刻 fork 出一个子进程,子进程做数据备份操作,主进程继续对外提供服务,所有Redis服务不会阻塞

Redis fork的实现?

Redis中执行BGSAVE命令生成RDB文件时,本质就是调用Linux中的fork()命令,Linux下的fork()系统调用实现了copy-on-write写时复制

fork()和exec()函数了解
exec()并不是一个特定的函数, 它是一组函数的统称, 它包括了execl()、execlp()、execv()、execle()、execve()、execvp()
fork是类Unix操作系统上创建进程的主要方法。fork用于创建子进程(等同于当前进程的副本)

Copy On Write 机制:

在fork出子进程后,与父进程共享内存空间,两者只是虚拟空间不同,但是其对应的物理空间是同一个【减少对物理内存的消耗】; 只有在父进程发生写操作修改内存数据时,才会真正去分配内存空间,并复制内存数据,而且也只是复制被修改的内存页中的数据,并不是全部内存数据

传统的普通进程复制,会直接将父进程的数据拷贝到子进程中,拷贝完成后,父进程和子进程之间的数据段和堆栈是相互独立的

linux 内存页大小为 4KB

Linux中CopyOnWrite实现原理

fork()之后,kernel把父进程中所有的内存页的权限都设为read-only,然后子进程的地址空间指向父进程。当父子进程都只读内存时,相安无事。当其中的某个进程写内存时,CPU硬件检测到内存页是read-only的,于是触发页异常中断(page-fault),陷入kernel的一个中断例程。中断例程中,kernel就会把触发的异常的页复制一份,于是父子进程各自持有独立的一份。

CopyOnWrite的好处:

1:减少分配和复制资源时带来的瞬时延迟;

2:减少不必要的资源分配;

CopyOnWrite的缺点:

1:如果父子进程都需要进行大量的写操作,会产生大量的分页错误(页异常中断page-fault)

写时复制,多更改条件下,内存被大量复制,重写完成后,数据如何释放?

本质来说,这是一个进程的内存资源管理问题:

  • 内核提供的写时复制机制避免了大量内存拷贝以及占用过多内存

  • 子进程fork操作只是拷贝了父进程的页表数据,当fork完成后,对于一个父进程引用的内存页,其引用值从1变成2.

  • 当父进程进行写操作时,会申请一份新的内存页,并从原内存页copy所有数据,之后父进程就在新的内存页上进行操作。而原内存页就变成了子进程的专属内存页,引用值变成了1

  • 子进程重写完成并退出后,内核会对资源进行回收,包括占用的内存资源

  • 回收:对于页表来说,是进程专属,直接清理即可;而关联的内存页会将其引用值减1,如果引用值变成了0,该内存页就会被回收

  • 也就是复制之前的页(原内存页),变成了子进程的专属页,当子进程结束后就会被回收掉

上一篇:IPC进程间通信:信号

下一篇:C++面经

相关内容

热门资讯

深圳水贝禁售铜条,商家称铜条变... 本文转自【深圳新闻网】; 继金条、银条之后 近期又一金属品种 在社交平台上“走红”—— “投资铜条”...
10年前买的钻戒已贬值99% 自2022年见顶以来,受主要消费国奢侈品消费降温、培育钻石日益走俏等因素影响,钻石行业正遭遇现代史上...
音频赋能协作:舒尔的UCC趋势... 格莱美旋律回荡场馆、奥斯卡荣光伴随音效绽放、全球巡演点燃亿万观众热情……众多顶级舞台背后,都有舒尔公...
百惠金控:钱大妈冲刺港股IPO... 踏入2026,香港IPO市场热情不减。近日,主打“不买隔夜肉”的内地生鲜连锁龙头——钱大妈正式向港交...
现货黄金首次站上4800美元/... 财联社1月21日电,现货黄金首次站上4800美元/盎司整数关口,现涨0.75%,本月涨幅超10%。 ...
高瓴、智元机器人联手投资,小米... “今日宜休”创始人王腾 在科技圈,王腾的动向总是自带流量。从当年的“微博办公”网红高管,到Redmi...
国际金价再创新高!法巴:或更快... 国际黄金期货价格和现货价格在20日均再创新高,双双突破每盎司4800美元。 法国巴黎银行(BNP P...
美国贸易代表称希望与中国进行新... 1月21日,外交部发言人郭嘉昆主持例行记者会。 彭博社记者提问,美国贸易代表格里尔在达沃斯表态称,希...
深交所向古钰瑭发出关注函 每经AI快讯,2026年1月20日,深交所向古钰瑭发出关注函:你作为立方数科股份有限公司(以下简称公...
沁恒微终止科创板IPO 原拟募... 来源:中国经济网 中国经济网北京1月21日讯 上交所网站昨日发布关于终止对南京沁恒微电子股份有限公司...
深圳、佛山……多个城市面临地铁... 近日,深圳、佛山两市关于地铁审批的官方回复,再次传递地铁审批收紧信号。 01. 深圳、佛山,也面临地...
英伟达CEO黄仁勋被曝1月下旬... 来源:观察者网 1月21日,彭博社援引消息称,英伟达公司首席执行官黄仁勋计划于1月底访问中国。 据一...
净利润9700万!今年科创板首... 1月20日,上交所官网显示,因南京沁恒微电子股份有限公司(以下简称:沁恒微)以及保荐机构华泰联合证券...
AI5芯片搞定,马斯克的纯自研... 编辑|晓楠、冷猫 刚刚,马斯克丢了个重磅炸弹: 「AI5 芯片设计进展顺利,特斯拉将重启 Dojo3...
收盘丨沪指冲高回落涨0.08%... 1月21日,A股市场冲高回落,截至收盘,沪指涨0.08%,深成指涨0.7%,创业板指涨0.54%。科...
上海2025年GDP增长5.4... 【大河财立方消息】1月21日,上海市统计局发布2025年上海市国民经济运行情况。 根据地区生产总值统...
申港证券IPO辅导近4年频挨罚... 《星岛》记者 齐鑫 上海报道 1月21日,瑞达期货股份有限公司(下称“瑞达期货”)发布公告称,公司拟...
稀土巨头跨界“狩猎”:金力永磁... 在 2026 年全球稀土永磁产业向“高性能、轻量化、智能化”深度转型的下半场,作为行业领军企业的金力...
业绩承压,换帅求变,耐克大中华... 1月21日,Nike耐克集团做出重大人事调整,耐克大中华区“一把手”将离任,中国业务再迎关键调整。耐...
AI驱动存储芯片结构性短缺,C... 今日(1.21),芯片板块高歌猛进,全市场费率最低档的芯片50ETF(516920)放量大涨超4%,...