Redis的持久化(RDB&&AOF)

一 RDB && AOF 对比

        1. Redis 提供了两种持久化方式,一种是RDB(Redis Database) , 另一种是 AOF(Append only file);
        2. RDB,简单来说,就是按照一定规则,定时将Redis 内存中说有的数据生成数据库快照,然后存储到磁盘等介质上。
            AOF,简单来说,就是将Redis 执行的所有写指令记录下来,下次redis 重新启动时,把所有写指令按顺序,重新执行一下。
        3. RDB 和 AOF 可以同时使用,这种情况下,如果redis 重新启动的话,会优先采用AOF 方式来进行数据恢复,

            因为AOF 方式的数据恢复完整度更高
        4. 如果没有数据库持久化的需求,那么完全可以关闭RDB 和 AOF方式,这样的话Redis 将变成一个纯内存数据库,像memcache 一样
        5. AOF Or RDB: 官方建议是两个共用,这样会更安全。
        6. AOF && RDB 优缺点:
            1. RDB 方式数据完整性方面较差,性能比较优越,备份数据文件较小
            2. AOF 方式数据完整性方面较强,性能稍差,备份数据文件较大,备份的文件能手工修改


二 RDB

        1. RDB 方式是Redis 默认方式。
        2. 执行过程: Redis 会单独创建(fork) 一个子进程来进行数据快照,而主进程不会进行任何IO操作,这样就确保了redis 极高的性能。
                              redis 会先将数据写入一个临时文件,待持久化过程完全结束之后,才会用这个临时文件替换上次持久化好的文件,

                              这样最大程度保证了数据完整性。
        3. 缺点: 在服务器宕机时,上次数据快照到宕机之间的所有数据将全部丢失
        4. 使用场景:对数据完整性不太敏感地系统,因为RDB 要比AOF 更加高效。
        5. 调用命令:SAVE 主动触发数据快照方法

        6. 相关配置:save 与save 之间是if else 的关系

                 save 900 1        设置900秒钟 有 1 个key 发生更新,然后进行快照保存
                 save 300 10        设置300秒钟 有 10 个key 发生更新,然后进行快照保存
                 save 60 10000    设置60秒钟  有 10000 个key 发生更新,然后进行快照保存


三 AOF

    【运行原理】

           1. 执行过程:客户端每执行一条写命令,都会立即添加到命令缓存区,然后根据redis 配置,定时将缓冲中的命令追加到AOF 文件中,

                                  redis AOF 默认是每一秒执行一次持 久化操作。
           2. 在追加AOF 文件时,如果遇到磁盘空间满或断点等情况导致日志写入不完整时,可使用redis 提供的redis-check-aof工具来进行日志修复
           3. 修复完成后,重启redis 即可

       【重写机制】

           1. AOF 文件比较大,为此Redis 对AOF 文件的大小设置了阈值,当即当AOF文件的大小超过所设定的阈值时,

               redis就会对AOF进行重写(重写合并指令), 只保留可以恢复数据的最小指令集。
           2. 调用命令: BGREWRITEAOF ,主动触发AOF 重新
           3. 重写原理:

                       在进行重写开始之际,redis 会创建一个“重写子进程",子进程会读取现有的AOF文件,将所有的指令进行分析压缩到一个临时文件
                       同时,主进程将继续接受io指令,并将io指令累计到内存缓冲区。 当重写子进程完成后,会向父进程发送一个信号,父进程收到信号后,

                       会将内存中缓存的指令追加到新的AOF 文件中。当追加完成后,redis 会用新的AOF文件代替旧AOF文件
           4. 如果AOF 被写坏了,那么redis 启动的时候会报错退出,那么我们可以使用redis-check-aof.exe工具进行检查,

               然后打开*.aof 文件进行手工修改

         【恢复方式】

               AOF 的数据恢复时会模拟一个服务过程。 Redis 首先虚拟一个客户端,读取AOF 文件,恢复Redis 命令和参数,

              然后就像客户端一样执行命令相应的函数,从而恢复数据。

         【相关配置】

                # appendfsync always  : 每写一次,立刻写入文件 
                # appendfsync everysec:每秒执行一次
                # appendfsync no: 默认方式

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值