1、Redisのはなぜ持続性を実現する必要がありますか?
データが失われた後にのみ、Redisのデータがメモリに保存されている場合は、ダウンタイムを回避し、停電や他のシナリオは、プロセスが終了した後、データの損失につながる、プロセスは終了します。持続性のメカニズムは、再起動後のRedisの永続的なデータ復旧に基づいて、ハード・ディスク・メモリにデータを永続化します。
2、Redisの永続的な方法います
永続的な方法にハードディスクに保存されている2.1 RDB、タイムラプススナップショット・プロセス・データ
RDBの永続性をトリガーする方法2.1.1?
2.1.1.1手動トリガ
1. [推奨されません] Redisの保存コマンドは同期動作を保存するには、現在、RDBファイルの形でハードディスクRedisのインスタンスに保存されているすべてのデータのスナップショット(スナップショット)。$の\色{赤} {プロセスは閉塞を引き起こす可能性があり、長い時間のための例は比較的大容量のメモリのために、完全なRDBするまで、現在のRedisサーバをブロックします。このコマンドは、オンライン環境が推奨されません。} $
のコマンドは以下の通りです
redis 127.0.0.1:6379> SAVE
OK
BGSAVE 2. [推奨] SAVEコマンドRedisのインスタンスをブロックする問題を解決するために、Redisのは、別のコマンドを提供します。
RedisのBGSAVEは、ディスクへのデータベースの現在のデータを保存するためにバックグラウンドで非同期コマンド。
$ \色{赤} {OKを返し、すぐに実行した後BGSAVEコマンドは、その後のRedisは、新しい子プロセスをforkし、オリジナルのRedisのプロセス(親プロセス)は、クライアントの要求を処理し続け、子プロセスは、ディスクにデータを保存するための責任があり、その後、終了します。} $
、次のようにコマンドは次のようになります。
redis> BGSAVE
Background saving started
ブロックする問題に対して明らかにBGSAVE SAVEコマンドは、最適化を行います。したがって、すべての内部Redisのは、関与する
とRDBはBGSAVE動作方法を使用し、SAVEコマンドは廃止されます。
2.1.1.2自動的にトリガ
Redisのは、自動的に次のシナリオでRDBの発注をトリガ:
- こうした「MNを保存する」として、保存した構成を使用してください。これは、m秒修正データセット内のn倍の存在を示し
、自動トリガbgsaveを。 - コピー操作を実行するノードからの全額が実行されている場合は、自動的にbgsaveマスターノードが生成し、RDBノードから文書を送信し、より多くの詳細については、セクション6.3を原則がコピーについて説明し参照してください。
- Redisのをリロードするデバッグreloadコマンドを実行すると、それが自動的に保存操作をトリガーします。
- デフォルトでは、ときにshutdownコマンド、開いていないAOFの永続性機能がされている場合
、自動的にbgsave行きました。
2.1.2 BGSAVEプロセスフロー
1. bgsaveコマンドの実行は、Redisの親プロセスは、現在のサブ内が実行されたか否かを判定する
コマンドbgsave直接リターンが存在する場合、そのようなRDB / AOFの子プロセスとしてプロセス。
2.子プロセスを作成するには、親プロセスのフォーク操作を、親プロセスのフォーク操作はブロックします、合格
情報の統計を通じてlatest_fork_usecオプションを表示するコマンドを、あなたは最近、操作フォーク消費取得することができ
、マイクロ秒単位で時を。
3.親プロセスフォークの完了後、bgsaveコマンドが返す「背景の節約を開始し、」情報
と親プロセスを詰まらせないだろう、あなたは他のコマンドに応答し続けることができます。
終了後の4子プロセスRDBファイルを作成し、メモリには、親プロセスに応じて、一時的なスナップショットファイルを生成し
、元のファイルが置き換え原子。RDBの最後の世代取得することができますコマンドを実行Lastsave
時、対応する情報統計rdb_last_save_timeオプションを。
このプロセスは、統計を更新するために、親プロセスが親プロセスの完了を示す信号を送信し、特定の参照の
持続性の下でrdb_ *情報関連のオプションを。
RDBのログファイルはどこ2.1.3?
DIRパラメーターは、指定したディレクトリに保存されています。
RDB変更ログファイルの格納ディレクトリのコマンドを実行します。
config set dir {newDir}
RDBは、ログファイル名を変更するためのコマンド:
config set dbfilename {newFileName}
$の\色{赤}、{ディスクやハードディスクが一杯などの場合に悪い状況が発生し、{NEWDIR}オンラインコンフィグセットDIRかもしれ
使用可能なディスク・パスへのファイルパスを変更し、ハンドオーバbgsaveディスクを実行した後、同じことが適用される
永続的なAOFへ$ファイル}の
$ \カラーレッド{} {LZFアルゴリズム圧縮処理を行うためにRDBファイルを生成するのRedisのデフォルトは、圧縮された
ダイナミック|いいえファイルは、あなたは{yesパラメータ設定rdbcompressionを設定できるのは、デフォルトで有効になって、メモリサイズよりもはるかに小さいです}変更。$}
$ \カラーレッド{{} CPUはRDB圧縮を消費するが、ファイルサイズを大幅に低減することができるが、ハードディスクに簡単に
またはネットワークへのノードから、推薦ラインを回しました。} $