13-redis持久化RDB和AOF

RDB

  • 简介
    RDB是Redis Database的缩写,是redis持久化的一种方式,具体指的是在指定的时间间隔内,将数据集快照写入磁盘,也就是行话将的Snapshot快照,它恢复时是将快照直接读到内存中。redis会单独的fork(派生)出一个子进程来进行持久化,会将数据写入到一个临时文件中,待持久化过程都结束了,再用这个临时文件来替换上一次的持久化文件。整个过程中主程是不会进行任何IO操作的(持久化全部交给子进程),这样就保证了极高的性能,如果需要进行大规模的数据恢复,且对于数据恢复的完整性不是很敏感那么RDB方式要比AOF更加高效,RDB方式进行持久化的缺点是最后一次持久化的数据可能会丢失。redis默认的持久化机制就是RDB,一般情况下不需要修改
    在这里插入图片描述

    • RDB相关配置
      rdb的相关配置在redis配置文件(redis.conf)的SNAPSHOTTING模块下
    ####### SNAPSHOTTING  #######
    save 900 1 #每900秒只要有1个key发生了变更就持久化
    save 300 10 #每300秒内只要有10个key发生了变化就持久化
    save 60 10000 #每60秒内只要有10000个key发生了变化就持久化
    stop-writes-on-bgsave-error yes #表示当持久化进程在持久化redis时发生异常后,禁止再次写入 如果为no则允许写入
    rdbcompression yes #持久化的时候是否进行压缩 默认是yes
    rdbchecksum yes #对rdb数据进行校验,耗费CPU资源,默认为yes
    dbfilename dump.rdb #生成的rdb快照的名称
    dir ./ #生成的rdb快照的存储目录 ./表示当前redis命令(eg:redis-xx.sh)所在的目录 一般是/user/local/bin下
    

    RDB触发持久化的方法有如下几种

    • 通过rdb的相关save的配置 达到阈值之后会进行持久化
    • 通过执行flushall命令也会持久化 生成一个默认的dump.rdb文件
    • 当执行redis的shutdown命令时也会触发持久化
  • 补充
    当你不清楚redis的配置文件路径的时候,也可以通过redis的config get命令来查看某个配置项的值 通过config set命令来设置某个值

    	127.0.0.1:6379> config get dir
    	1) "dir"
    	2) "/usr/local/bin"
    	```
    

rbd的优缺点 优点是适合大规模的数据恢复 对数据的完整性要求不高 缺点是如果redis意外宕机,最后一次save的时间间隔内的修改就会丢失,相对于aof方式来说更加的占用内存空间

AOF

  • 简介
    AOF指的是Append Only File,它实际上是将所有的redis写操作的命令都记录到一个.aof文件的文件中(可以用文本文件打开并查看其内容),当需要进行恢复的时候(redis宕机重启等等)会读取这个aof文件,然后一个个的执行这些命令
    在这里插入图片描述
  • AOF相关配置
    aof的相关配置在redis配置文件(redis.conf)的APPEND ONLY MODE模块下,修改aof配置后然后重启redis aof相关配置就会生效 如果生成的aof文件是有问题的,redis是起不来的 可以通过./redis-check-aof --fix aof文件名 来自动恢复aof文件
    ###### APPEND ONLY MODE ######
    appendonly no #是否启用aof进行持久化 默认是不启用的 如果是yes则会启用
    appendfilename "appendonly.aof" #aof持久化的文件名
    #appendfsync always 表示每次操作都持久化一次(重新生成aof文件)
    appendfsync everysec #aof同步策略 这个表示每秒持久化一次
    #appendfsync no表示不进行持久化
    no-appendfsync-on-rewrite no #表示在aof 持久化期间,是否对新的操作记录进行追加。默认为no,表示"不暂缓",新的aof记录仍然会被立即持久化 如果是yes则会将aof持久化期间的操作先写到缓存中,然后再从缓存中进行持久化
    auto-aof-rewrite-percentage 100 #aof文件增长比例,指当前aof文件比上次重写的增长比例大小。aof重写即在aof文件在一定大小之后,重新将整个内存写到aof文件当中,以反映最新的状态(相当于bgsave)。这样就避免了,aof文件过大而实际内存数据小的问题(频繁修改数据问题)
    auto-aof-rewrite-min-size 64mb #aof文件重写最小的文件大小,即最开始aof文件必须要达到这个文件时才触发,后面的每次重写就不会根据这个变量了(根据上一次重写完成之后的大小).此变量仅初始化启动redis有效.如果是redis恢复时,则lastSize等于初始aof文件大小.
    aof-load-truncated yes #指redis在恢复时,会忽略最后一条可能存在问题的指令。默认值yes。即在aof写入时,可能存在指令写错的问题(突然断电,写了一半),这种情况下,yes会记录日志并继续,而no会直接恢复失败.
    aof-use-rdb-preamble yes #允许使用aof和rdb混合持久化
    

aof的优缺点
优点:文件完整性相对于rdb会更好,默认是每秒同步一次,最多会丢失1秒的数据
缺点:aof文件比redis.dump要大,aof的运行效率也比rdb要慢

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值