redis-持久化

  1. 作用
  2. RDB
  3. AOF
  4. RDB/AOF选择

作用

将内存中的数据保存到物理硬盘上,防止数据丢失。支持恢复。持久化方式:快照(mysqlDump,rdb)、写日志(mysql binlog,hbase hlog, aof)

RDB

rdb文件是一个二进制文件,是存储在硬盘中的。也是一种复制媒介

触发机制:

  • save(同步)

执行save命令,会导致redis执行队列发生阻塞。数据量大时会降低性能。
文件策略:新的替换老的文件
复杂度:O(N)

  • bgsave(异步)

执行bgsave命令, 服务端新建子进程会执行fork()命令消耗一定的内存,速度很快,‘’不会‘’阻塞客户端。其他和save相同,备份时使用临时文件。

  • 自动

通过配置save策略 一定时间内数据发生一定数量的改变
优点: 无法控制备份频率,容易触发频繁的save
dbfilename dump-{port}.rdb 备份文件名
dir 备份目录
stop-writes-on-bgsave-error yes 错误时是否停止写入
rdbcompression yes 压缩
checksum yes

  • 不可忽略的触发机制方式
  1. 全量复制
  2. debug reload
  3. shutdown

AOF

rdb: 耗时耗性能,不可控,丢失数据(宕机)
AOF: 就是类似于日志功能,通过重新执行备份文件可以恢复数据
appendonly yes 开启
apendfilename "appendonly-port.aof
appendfsync everysec
dir /bigdiskpath
no-appendfsync-on-rewrite yes\

三种策略

  • always

写命令刷新到缓冲区->缓冲区到AOF文件, IO开销大,但是不会丢失数据

  • everysec

写命令刷新到缓冲区->每秒把缓冲区刷新到硬盘(可能会丢失一秒的数据)

  • no

由操作系统决定刷新执行

AOF重写

对覆盖数据保存最新值, 对过期数据进行删除.可优化命令进行合并以达到加速恢复速度,减少占用磁盘存储空间.

  1. bgrewriteaof fork子进程进行内存内容重写持久化
  2. aof重写配置 1. auto-aof-rewrite-min-size 重写需要的大小 2. auto-aof-rewtie-percentage 增长率

自动触发机制: aof_current_size>auto-aof-rewrite-min-size;

RDB VS AOF

rdb-vs-aof

  • RDB 最佳策略 “关” / 集中管理 / 主从,从开
  • AOF 最佳策略"开": 缓存和存储 / AOF重写集中管理 / everysec
  • 最佳策略: 小分片 缓存或者存储 监控(硬盘/内存/负载/网络) / 足够的内存
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值