Redis必知必会之持久化


1.Redis全部的数据保存在内存中,对数据的更新将异步的保存到磁盘上。segmentfault

2.持久化的方式:快照(MySQL Dump和Redis RDB)、写日志(MySQL Binlog和Redis AOF)安全

3.Redis RDB触发方式app

  • save(同步命令,替换老文件)
  • bgsave (异步命令,fork() 一个进程处理 通常状况会很快)
  • 自动
命令 save bgsave
IO类型 同步 异步
是否阻塞 是(发生在fork())
复杂度 O(n) O(n)
优势 不会消耗额外内存 不阻塞客户端命令
缺点 阻塞客户端命令 须要fork 消耗内存

4.自动生成RDB的配置,本质是每seconds会有changes个改变 就会执行bgsave。异步

相关配置:性能

  • stop-writes-on-bgsave-error bgsave时发生错误时是否中止写入
  • dir rdb目录
  • rdbcompression 是否压缩
  • rdbchecksum 校验和检验

最佳实践:spa

  • dbfilename dump-${port}.rdb
  • dir /bigdiskpath
  • stop-writes-on-bgsave-error yes
  • rdbcompression yes
  • rdbchecksum yes

5.rdb生成触发机制 全量复制、debug reload 、shutdown。操作系统

6.RDB耗时、耗性能。debug

  • O(n)数据:耗时
  • fork():消耗内存,copy-on-write策略
  • Disk I/O : IO性能

7.RDB不可控、有可能丢失数据。日志

8.AOF 的三种策略进程

  • always 写命令刷新的缓冲区
  • everysec 默认
  • no 操做系统决定
命令 always everysec no
优势 不丢失数据 每秒一次fsync 不用管
缺点 IO开销较大 通常sata盘只有几百TPS 丢一秒数据 不可控

9.AOF重写做用 减小硬盘占用量、加速恢复速度。AOF重写实现的两种方式:bgrewriteaof、AOF重写配置。

10.AOF重写配置

  • auto-aof-rewrite-min-size:AOF文件重写须要的尺寸
  • auto-aof-rewrite-percentage:AOF文件增加率
  • aof_current_size:AOF当前尺寸
  • aof_base_size:AOF上次启动和重写的尺寸

11.AOF配置最佳实践

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

12.RDB和AOF对比

命令 RDB AOF
启动优先级
体积
恢复速度
数据安全性 丢数据 根据策略决定
轻重
相关文章
相关标签/搜索