一、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进程会占用一定的内容空间
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)