redis持久化rdb&aof分析

redis是一个内存数据库,数据都是加载在内存中,因此效率很高很快。但是内存中的数据会因为关机断电等操作消失,一次redis会有一个策略来将内存中的数据保存到硬盘中。

linux 可以使用whereis redis 查看redis配置文件和命令位置

连接redis可以使用命令 config get dir 查看持久化文件保存位置

 

redis持久化策略有两种

rdb

  rdb策略会根据redis配置文件中的save参数【save seconds changes】对redis主线程fork一份子线程,进行内存快照压缩,生成一份dump.rdb文件(文件路径可以修改redis.conf--请先备份 dir 参数,文件名称可以修改dbfilename 参数)

 

 

 

  持久化策略通过,save参数来配置。默认save参数

 

 

 

  优点:对于大量数据来说rdb保存很快

  缺点:可能会丢失最后一次快照后的数据,因为会fork一份子线程,数据量太大的话,会有加大内存负担

aof

  aof 可以通过配置文件redis.conf 中appendonly参数配置为Y,默认不开启。

 

 

 

  持久化策略有三种,通过appendfsync参数来配置,默认everysec。

 

 

 

  aof因为保存的是操作记录日志类比于mysql的binlog。所以当aof文件大小超过一定体积的时候,会触发rewrite策略。rewrite的时候回fork一份子线程,进行日志读取,将最新记录写到新文件中,然后进行重命名。

为了不频繁触发rewrite,所以要合理配置min-size的大小。

   优点:aof通过合适的同步策略可以保存数据的操作记录,而且aof文件协议也很方便读懂。数据丢失粒度会很小

   缺点:aof是追加文件策略,占用体积要大于rdb,而且性能相较于rdb也会慢一些。

 

rdb和aof两种持久化策略,可以同时存在的,同时存在时,aof为主持久

  

 

posted @ 2021-01-30 15:43  BigWrite  阅读(78)  评论(0编辑  收藏  举报