redis RDB持続化

1961 ワード

RDB:redisデータメモリからハードディスクへのスナップショット、データ持続化用
一、saveコマンド持続化(同期)
  • 実行方法
  • redisクライアントはsaveコマンド
  • を発行する.
  • 新しい一時RDBファイル
  • を生成する
  • save実行後、古いRDBファイルを新しいRDBファイル
  • に置き換える
  • 複雑度:O(n)
  • 欠点:saveは同期コマンドであり、データ量が大きすぎるとブロックされます.
  • の利点:余分なメモリが消費されない
  • 二、bgsaveコマンド持続化(非同期)
  • 実行方法
  • redisクライアントはbgsaveコマンド
  • を発行する.
  • linuxのfork()を使用してredisのサブプロセスを生成し、RDBファイルの生成
  • を完了する.
  • サブプロセス生成が終了すると、メインプロセスBackground saving terminated with success
  • に通知する.
  • 複雑度:O(n)
  • 欠点:fork()はメモリ
  • を消費する
  • の利点:「ブロックしない」redisクライアントコマンド(fork()はブロックするが、速度は十分に速く、合理的な使用には影響しない)
  • 三、構成ファイルの自動持続化
  • RDBファイルの構成パラメータを自動的に生成します(デフォルト)
  • フォーマット:save
  • save 900 1 #  900 (15  ) ,       1 key
    save 300 10 # 300 (5  ) ,       10 key
    save 60 10000 # 60  ,       10000 key
    
  • は複数の構成が可能で、いずれかを満たすと有効となり、bgsaveコマンド
  • が実行する.
  • は、#を直接使用してsave構成を注釈し、save
  • を無効にすることができる.
  • は、save ''を構成するsave構成
  • をキャンセルすることもできる.
  • 推奨:save構成を無効にする
  • 生成されたRDBファイルの名前を指定します(デフォルト)
  • dbfilename dump.rdb
  • ファイル名dump.rdb
  • 提案:dbfilename dump-${port}.rdbポート番号区分に参加し、異なるredisが
  • を直接覆うことを防止する.
  • 生成されたRDBファイルディレクトリの場所を指定します(デフォルト)
  • dir ./
  • は、現在のディレクトリであるredisを指す.configのディレクトリ
  • RDBファイルの構成(デフォルト)
    stop-writes-on-bgsave-error yes # bgsave             
    rdbcompression yes # RDB      
    rdbchecksum yes #    RDB        
    
  • 四、その他RDBファイルの生成をトリガする方法
  • 全量複製例えば主従複製
  • debug reload
  • shutdown

  • 五、RDBの欠点
  • 消費時間、消費性能
  • データO(N)
  • fork()はメモリ
  • を消費する.
  • I/O性能消耗大
  • 制御不能、データ損失
  • 実行を保存中にダウンタイムが発生すると、データは
  • を失う.