Redis 基础知识笔记-持久化

Redis 持久化两种 RBD和 AOF

1. RBD (Redis data base)

默认选择RBD, RBD 是在指定间隔时间执行了指定次数的的写操作,则会fork 一个子进程去将快照存储到磁盘上,不影响Redis 远单线程 的IO,生成一个dump.rbd文件,替换旧的dump.rbd。Redis 重启会通过加载dump.rdb文件恢复数据。

优点

1 适合大规模数据恢复

2 对业务数据完整性和一致性要求不高,RDB是很好的选择

缺点

1 数据完整性和一致性不高,最后一次宕机会导致最后一次没够条件写入磁盘的数据丢失

2 备份事占用内存,备份的时候会独立创建一个新的子进程,将数据写入一个临时文件 (此时内存会有两套数据),再用临时文件替换之前的备份文件

2. AOF (Append only file)

Redis 默认不开启,只记录写操作,不断追加记录到文件appendonly.aof中,Redis 重启的时候会根据文件内容将指令都执行一次,会很慢。

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

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

AOF的重写机制 重写的原理:Redis 会fork出一条新进程,读取内存中的数据,并重新写到一个临时文件中。并没有读取旧文件。最后替换旧的aof文件。

触发机制:当AOF文件大小是上次rewrite后大小的一倍且文件大于64M时触发。这里的“一倍”和“64M” 可以通过配置文件修改。

3. RDB AOF 结合备份

其实这里就是在AOF的基础上添加了RBD, AOF 必须开启,AOF 文件写入RBD的内容,再将备份的时候产生的指令加入到AOF里面,这样就比较完整了。

集群架构,一般主节点都不做备份,从节点做备份,主节点只同步到一个或是两个主节点上,这样可以减少主节点的IO 性能的消耗。 而从节点可以再把数据同步到其他从节点上。

总结

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

你可能感兴趣的:(redis,缓存,数据库)