zoukankan      html  css  js  c++  java
  • 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重写集中管理
    • 最佳策略

      • 小分片
      • 缓存或者存储
      • 监控(硬盘,内存,负载,网络)
      • 足够的内存
  • 相关阅读:
    高并发处理(一)页面静态化
    高并发处理(二)图片服务器分离
    五百强企业某部门视频面试题汇总
    access和sqlyog的使用
    条件查询
    primary select |||| case primary select
    win10 + ubuntu16 双系统安装
    ubuntu16 下安装python3.6 和Anaconda3
    import nltk nltk.download('reuters') [nltk_data] Error loading reuters: <urlopen error [Errno 11004] [nltk_data] getaddrinfo failed>
    共现矩阵
  • 原文地址:https://www.cnblogs.com/richiewlq/p/12191261.html
Copyright © 2011-2022 走看看