zoukankan      html  css  js  c++  java
  • Redis的持久化——RDB与AOF

    Redis的持久化——RDB与AOF

    RDB(Redis DataBase)快照形式

    1、RDB是什么?

    • 在指定的时间间隔内将内存中的数据集快照写入磁盘,也就是Snapshot快照,它恢复时是将快照文件直接读到内存里
    • redis会单独创建一个子进程(fork)来进行持久化,会先将数据写入到一个临时文件中,待持久化过程都结束了,再用这个临时文件替换上次持久化好的文件
    • 整个过程中,主进程是不进行任何IO操作的,这就确保了极高的性能,如果需要进行大规模数据的恢复,且对于数据恢复的完整性不是非常敏感,那RDB方式要比AOF方式更加的高效
    • RDB的缺点是最后一次持久化后的数据可能丢失

    2、Fork

    • fork的作用是复制一个与当前进程一样的进程
    • 新进程的所有数据数值都和原进程一致,但是是一个全新的进程,并作为原进程的子进程

    3、RDB保存的是dump.rdb文件

    4、配置策略

    5、触发RDB

    6、RDB的优点

    • 适合大规模的数据恢复
    • 对数据完整性和一致性要求不高

    7、RDB的缺点

    • 在一定间隔时间做一次备份,所以如果redis意外down掉的话,就会丢失最后一次快照后的所有修改
    • fork的时候,内存中的数据被克隆一份,大致2倍的膨胀性需要考虑

    8、动态停止RDB

    • 在redis-cli命令行中,输入congfig set save""

      [root@node01 redis-3.0.4]# redis-cli config set save ""
      OK
      

    AOF(AppendOnly File)日志形式

    1、AOF是什么?

    • 以日志的形式来记录每个写操作,将redis执行过的所有写指令记录下来(读操作不记录),只许追加文件不可以改写文件
    • redis启动之初会读取该文件重新构建数据,换言之,redis重启的话,就根据日志文件的内容将写指令从前到后执行一次以完成数据的恢复工作

    2、AOF保存的是appendonly.aof文件

    3、配置策略

    4、触发AOF

    • 修改配置文件的appendonly为yes

    5、AOF的数据修复

    • redis-check-aof --fix appendonly.aof

      [root@node01 redis-3.0.4]# redis-check-aof --fix appendonly.aof
      

    6、AOF的优点

    • 同步持久化每次发生数据变更会被立即记录到磁盘
    • 性能较差但数据完整性比较好

    7、AOF的缺点

    • 相同数据集的数据而言aof文件要远大于rdb文件,恢复速度慢于rdb

    总结

    • Redis 默认开启RDB持久化方式,在指定的时间间隔内,执行指定次数的写操作,则将内存中的数据写入到磁盘中。
    • RDB 持久化适合大规模的数据恢复但它的数据一致性和完整性较差。
    • Redis 需要手动开启AOF持久化方式,默认是每秒将写操作日志追加到AOF文件中。
    • AOF 的数据完整性比RDB高,但记录内容多了,会影响数据恢复的效率。
    • Redis 针对 AOF文件大的问题,提供重写的瘦身机制。
    • 若只打算用Redis 做缓存,可以关闭持久化。
    • 若打算使用Redis 的持久化。建议RDB和AOF都开启。其实RDB更适合做数据的备份,留一后手。AOF出问题了,还有RDB。
  • 相关阅读:
    [转]PostgreSQL数据类型
    Linux下执行自定义的可执行命令无效原因
    [其它]iOS 12.2支持电信VoLTE了,中国电信教你如何开通:只要三步
    本机无法访问虚拟机里面的nginx的80端口
    百度的网络接入架构图
    如何让局域网中的其他主机访问虚拟机
    java中synchronized 用在实例方法和对象方法上面的区别
    Redis登陆服务器和批量删除指定的key
    vim查找关键字的好方法
    网络攻防之动态修改表单的值
  • 原文地址:https://www.cnblogs.com/ghh520/p/13227495.html
Copyright © 2011-2022 走看看