redis的RDB和AOF

缓存的特点: 可以丢失,极速。

   

数据库特点: 绝对不可以丢失,速度 + 持久性,掉电易失。

   

存储层:都有快照副本、日志

   

redis的持久化:

1、RDB (redis data base) 默认开启

在指定时间间隔内,执行指定次数的写操作,会将内存数据写到磁盘里,在指定路径下生成一个dump.rdb文件,redis每次重启都会加载dump.db。

   

   

   

优点:1、适合大规模的数据恢复;

2、适合数据完整性和一致性不高。

   

缺点:1、因为数据完整性和一致性不高,最后一次备份容易宕机。

2、备份时会占用内存。(因为Redis 在备份时会独立创建一个子进程,将数据写入到一个临时文件(此时内存中的数据是原来的两倍哦),最后再将临时文件替换之前的备份文件)。夜深人静时备份比较合适。

   

   

2、AOF (append only file) 默认关闭

为了弥补RDB的不足,它采用日志形式来记录每个写操作,并追加到文件中。redis重启将会按照"从前到后"的命令执行日志文件中的指令。

   

优点:数据的完整性一致性更高。

缺点:因为AOF记录的内容多,文件会越来越大,数据恢复也越来越慢。

   

   

   

   

   

总结:

  1. Redis 默认开启RDB持久化方式,在指定的时间间隔内,执行指定次数的写操作,则将内存中的数据写入到磁盘中。
  2. RDB 持久化适合大规模的数据恢复但它的数据一致性和完整性较差。
  3. Redis 需要手动开启AOF持久化方式,默认是每秒将写操作日志追加到AOF文件中。
  4. AOF 的数据完整性比RDB高,但记录内容多了,会影响数据恢复的效率。
  5. Redis 针对 AOF文件大的问题,提供重写的瘦身机制。
  6. 若只打算用Redis 做缓存,可以关闭持久化。
  7. 若打算使用Redis 的持久化。建议RDB和AOF都开启。其实RDB更适合做数据的备份,留一后手。AOF出问题了,还有RDB。

一般涉及到IO都容易发生数据丢失

posted @ 2020-10-20 16:36  黑质白章  阅读(176)  评论(0编辑  收藏  举报