redis 持久化-----rdb和aof

 

 

*Rdb:在指定时间间隔内,将内存中的数据快照写入磁盘,也就是snapshot快照,恢复的时候将快照加载到内存,且redis会单独创建一个子进程(fork)来进行持久化,会先将数据写到一个临时文件,待持久化过程都结束了,替换上次的文件,因此主线程不进行io操作,确保了效率  

缺点:最后一次保存之后,如果出现故障那么修改数据可能丢失,且fork操作可能非常耗时

解释:Fork作用--复制一个与当前进程一样的进程,数据和原进程一样,作为原进程的子进程;但是当原进程数据量大的时候,操作耗时大;

配置文件中的默认保存策略:  

Save  900  1            ---900s内key改变1次则保存

Save  300  10          ---300s内key改变10次则保存

Save  60 10000       ---60s内key改变10000次则保存

当然我们也可以手动保存:

SAVE 命令执行一个同步保存操作,将当前 Redis 实例的所有数据快照(snapshot)以 RDB 文件的形式保存到硬盘。

一般来说,在生产环境很少执行 SAVE 操作,因为它会阻塞所有客户端,保存数据库的任务通常由 BGSAVE 命令异步地执行。

 

*Aof:日志的形式记录每个写操作,将redis所有写操作记录下来,记录操作和库,保存成.aof的格式,  在redis启动时,先加载aof文件;

Aof的配置策略:

  always  同步持久化  每次发生数据变更会被立即记录到磁盘,

  Everysec 异步持久化(默认)  每秒记录   有数据丢失  有可能丢失1秒

 

 

如果aof和rdb两种策略都开启,那么加载会以aof优先;

对比:aof每秒同步,丢失数据少,而rdb有可能丢失最后一次修改的数据,相同数据而言,aof文件要远大于rdb,恢复速度慢于rdb,aof运行效率要慢与rdb

猜你喜欢

转载自blog.csdn.net/qq_39512671/article/details/81631790