Redis必知必會之持久化

1.Redis全部的數據保存在內存中,對數據的更新將異步的保存到磁盤上。

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 校驗和檢驗

最佳實踐:操作系統

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

5.rdb生成觸發機制 全量複製、debug reload 、shutdown。debug

6.RDB耗時、耗性能。日誌

  • O(n)數據:耗時
  • fork():消耗內存,copy-on-write策略
  • Disk I/O : IO性能

7.RDB不可控、有可能丟失數據。cdn

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
啓動優先級
體積
恢復速度
數據安全性 丟數據 根據策略決定
輕重
相關文章
相關標籤/搜索