5.Redis持久化的取舍和选择

 

持久化的作用

  • 什么是持久化

    • redis所有的数据保存在内存中,对数据的更新将异步地保存到磁盘上。
  • 持久化的实现方式

    • 快照

      • mysql dump
      • redis RDB
    • 写日志

      • Mysql Binlog
      • Hbase HLog
      • Redis AOF

RDB

  • 什么是RDB

    • 快照 备份 主从复制
  • 触发机制-主要三种方式

    • save 同步

      • 文件策略 如果存在老的RDB文件 新替换老
      • 复杂度 O(N)
      • 优点 不会消耗额外内存
      • 缺点 阻塞客户端命令
    • bgsave 异步 background fork 子进程

      • 文件策略和复制度和save相同
      • 优点 不阻塞客户端命令
      • 缺点 需要fork 消耗内存
    • 自动生成RDB bgsave

      • save 900 1
      • save 300 10
      • save 60 10000
      • dbfilename dump.rdb
      • dir ./
      • stop-writes-on-bgsave-error yes
      • rdbcompression yes 压缩格式
      • rdbchecksum yes 校验
    • 最佳配置

      • dbfilename dump-${prot}.rdb
      • dir /bigdiskpath
      • stop-writes-on-bgsave-error yes
      • rdbcompression yes 压缩格式
      • rdbchecksum yes 校验
  • 触发机制-不容忽视方式

    • 全量复制 主从复制 生成rdb
    • debug reload 生成rdb
    • shutdown 生成rdb
  • 实验

    • save阻塞
    • bgsave fork
    • 自动配置
    • rdb长什么样子 *总结
    • RDB是Redis内存到硬盘的快照,用于持久化
    • save通常会阻塞Redis
    • bgsave不会阻塞Redis 但是会fork新进程
    • save自动配置满足任意就会被执行
    • 有些触发机制不容忽视

AOF

  • RDB存在问题

    • 耗时 消耗性能

      • O(n)数据:耗时
      • fork 消耗内存 copy-on-write策略
      • Disk I/O I/O性能
    • 不可控 丢失数据

      时间戳save
      T1 执行多个写命令
      T2 满足RDB自动创建的条件
      T3 再次执行多个写命令
      T4 宕机 t3时间点的数据丢失
  • 什么是AOF

    • 日志记录所有命令
    • 完整恢复
  • AOF三种策略

    • always
    • everysec 默认配置
    • no 根据操作系统决定

RDB和AOF的抉择

命令alwayseverysecno
优点 不丢失数据 每秒一次fsync丢1秒数据 不用管
缺点 UI开销大,一般的sata盘只有几包TPS 丢失一秒数据 不可控

AOF重写

  • 原生AOF

    • set hell world
    • set hello java
    • set hello hehe
    • incr counter
    • incr counter
    • rpush mylist a
    • rpush mylist b
    • rpush mylist c
    • 过期数据
  • AOF重写

    • set hello hehe
    • set counter 2
    • rpush mylist a b c *AOF重写作用
    • 减少磁盘占用量
    • 加速恢复速度
  • AOF重写两种方式

    • bgrewriteaof命令 从内存中 fork -> aof重写 -> AOF文件

    • AOF重写配置

      配置名含义
      auto-aof-rewrite-min-size AOF文件重写需要的尺寸
      auto-aof-rewrite-precentage AOF文件增长率
    • 统计

      统计名含义
      aof_current_size AOF当前尺寸
      aof_base_size AOF上次启动或重写的尺寸
    • 自动触发机制 需要同时满足两者

      • aof_current_size > auto-aof-rewrite-min-size
      • (aof_current_size - aof_base_size)/aof_base_size > auto-aof-rewrite-precentage
    • AOF重写流程

  • 配置

    • appendonly yes
    • appendfilename “appendonly-${prot}.aof”
    • appendfsync everysec
    • dir /bigdiskpath
    • no-appendfsync-on-rewrite yes
    • auto-aof-rewrite-min-size 64mb
    • auto-aof-rewrite-precentage 100

Reddis 持久化的取舍与选择

  • RDB和AOF比较
命令RDBAOF
启动优先级
体积
恢复速度
数据安全性 丢数据 根据策略决定
轻重 重(全部数据cpu密集) 轻 追加操作
  • RDB最佳策略

    • “关”
    • 集中管理
    • 主从,从开?
  • AOF最佳策略

    • “开”:缓存和存储
    • AOF重写集中管理
  • 最佳策略

    • 小分片
    • 缓存或者存储
    • 监控(硬盘,内存,负载,网络)
    • 足够的内存
posted @ 2020-01-14 11:50  Richie`  阅读(273)  评论(0编辑  收藏  举报