Redis的持久化

Redis的持久化,第1张

一、rdb持久化
① 配置

redis默认是开启reb持久化的,数据会保存到 /usr/local/bin/dump.rdb文件中

可以通过下面的变量修改路径和文件名称

dir ./

dbfilename dump.rdb 

②原理

RDB 是 Redis DataBase 的缩写,内存快照的技术实现的持久化,在某一个时刻,把Redis中所有的数据以文件的形式进行磁盘保存。

如上图所示,快照开始时,主线程会fork出一个用于快照 *** 作的子线程,并且复制一份数据对应的映射页表给子线程。子线程可以通过这个页表访问主线程的原始数据,然后将数据生成快照文件,存储到磁盘中 。 相当于就是每个key对应一个文件页。

我们知道存储磁盘的时间是比较长的,当这个时候有请求进行想写数据怎么办呢?

    这个时候就要用到 写时复制,即当请求需要对键值C进行 *** 作时,主线程会把新数据或修改后的数据写到一个新的物理内存地址上(键值对C'),并修改主线程自己的页表映射。所以,子进程读到的类似于原始数据的一个副本,而主线程也可以正常进行修改。

    这既保证了快照的完整性,也允许主线程同时对数据进行修改,避免了对正常业务的影响。

③ 什么时候刷新一次磁盘

到配置文件中配置 


save 900 1 ## 900s内 至少有1个key进行了修改,则持久化 

save 300 10 ## 300s内 至少有10个key进行了修改,则持久化

save 60 10000 ## 60s内 至少有10000个key进行了修改,则持久化
④ 优缺点

优点:

1.适合大规模的数据恢复 因为fork线程生成快照不会影响主线程

2.对数据的完整性要求不高 可能redis断电了,最新的数据没有生成快照,就会造成数据不完整

缺点:

1. 需要一定的时间间隔进程 *** 作

2. fork进程会占用一定的内容空间

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/728398.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-04-26
下一篇 2022-04-26

发表评论

登录后才能评论

评论列表(0条)

保存