Redis必知必会之持久化

xx19941215 · · 1139 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。


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

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

3.Redis RDB触发方式

  • 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 校验和检验

最佳实践:

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

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

6.RDB耗时、耗性能。

  • 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
启动优先级
体积
恢复速度
数据安全性 丢数据 根据策略决定
轻重

有疑问加站长微信联系(非本文作者)

本文来自:Segmentfault

感谢作者:xx19941215

查看原文:Redis必知必会之持久化

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

1139 次点击  
加入收藏 微博
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传