Redis持久化RDB与AOF -----来如此容易

持久化

利用永久性的储存介质进行保存,在特定的时间将保存的数据进行恢复的工作机制

image-20201025114311810

RDB

  • 手动执行一次保存(在工作空间生成一个2进制的dump.rdb文件) save

    image-20201025114919131

  • 保存后,下一次启动redis直接会恢复对应数据

  • save 指令执行会阻塞当前的Redis服务器,直到RDB过程完成为止,有可能会造成长时间的阻塞,线上环境不建议使用

bgsave

image-20201026163842984

  • 后台储存过程中如果出现错误现象,是否停止保存操作(默认开启) stop-writes-on-bgsave-error yes
RDB启动方式
  • 在conf文件中配置 save second changes 满足时间范围内key的变化数量达到指定数量进行持久化,默认使用 bgsave

image-20201026165750753

rdb特殊启动形式
  • 服务器运行过程中重启 debug reload
  • 关闭服务器时指定保存数据 shutdown save
RDB的优点
  • RDB是一个紧凑的二进制文件,储存效率较高
  • RDB内部储存的是redis在某个时间点的数据快照,非常适合用于数据备份,全量复制等场景
  • RDB恢复数据的速度比AOF快很多
  • 应用:服务器中每X小时执行bgsave备份,并将RDB文件拷贝到远程机器中,用于灾难恢复
RDB缺点
  • RDB方式无论是执行指令还是利用配置,无法做到实时持久化,具有较大的可能性丢失数据
  • bgsave 指令每次运行都需要执行fork操作创建子进程,要牺牲掉一些性能
  • Redis 的众多版本中未进行RDB文件格式的版本统一,有可能出现各版本之间的数据格式无法兼容的现象
  • 储存数据量大,效率低(基于快照思想,每次读写全部数据,当数据量大时,效率低),io性能低

AOF

AOF持久化:以独立日志方式记录每次写命令,重启时再重新执行AOF文件中的命令达到恢复数据的目的,与RDB相比可以简单的描述为改记录数据为记录数据的产生过程

AOF 写数据三种策略
  • always 每次写入操作均同步到AOF文件中,数据0误差,性能低
  • everysec 每秒将缓冲区中的指令同步到AOF文件中,数据准确性较高,性能高,建议使用(默认),系统忽然宕机时丢失一秒数据
  • no 操作系统控制每次同步到AOF文件的周期,不可控、
AOF功能打开
  • 配置文件 添加以下配置

    appendonly yes (默认no)
    appendfsync always (everysec || no)
    appendfilename 保存的文件名
    
AOF重写

image-20201027110133881

  • 手动重写 bgrewriteaof
  • 自动重写配置
auto-aof-rewrite-min-size size // 按大小重写
auto-aof-rewrite-percentage percentage // 按比例重写

image-20201027111833291

image-20201027112511742

image-20201027112627984

RDB与AOF区别

image-20201027112835747

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7yISzJlo-1603876134211)(C:\Users\86188\AppData\Roaming\Typora\typora-user-images\image-20201027112853609.png)]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

杂货店的阿猿

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值