Redisは、RDBとAOFの永続化メソッドを提供して、メモリ内のデータをディスクに保存し、偶発的なデータ損失を回避します
永続性RDBとAOFの比較
RDB
RDB(スナップショット)は、特定の時点でのサーバーのデータベース状態(空でないデータベースと関連するキーと値のペア)を、圧縮されたバイナリファイル(dump.rdb)に保存します。これは、デフォルトの永続化方法でもあります。
手動永続化コマンド:
SAVEコマンドは、Redisサーバープロセスをブロックします。
BGSAVEは子プロセスを生成し、子プロセスはRDBファイルの作成を担当し、サーバーの親プロセスは引き続きコマンド要求を処理します。
利点:RDBは非常にコンパクトなファイルであり、特定の時点でRedisデータセットを保存します。この種類のファイルは、バックアップに非常に適しています。
短所:サーバーに障害が発生したときにデータの損失を回避する必要がある場合、RDBは適していません。Redisでは、RDBファイルを保存する頻度を制御するためにさまざまなセーブポイントを設定できますが、RDBファイルはデータセット全体の状態を保存する必要があるため、簡単な操作ではありません。したがって、RDBファイルを少なくとも5分保存できます。この場合、ダウンタイムが発生すると、数分のデータが失われる可能性があります。
AOF
AOFパーシステンスは、フォーマット命令の形式で「操作+データ」を操作ログファイル(appendonly.aof)の末尾に追加します。追加操作が戻った(ファイルに書き込まれた、または書き込もうとしている)後、実際のデータが実行されます変更の場合、「ログファイル」はすべての履歴操作を保存します。サーバーがデータ回復を必要とする場合、このログファイルを直接再生してすべての操作を復元できます。
AOFはデフォルトで閉じられ、メソッドを開き、設定ファイルreds.confを変更します:appendonly yes
AOFファイル同期戦略、3つの有効な値があります:常に毎秒いいえ、デフォルトは毎秒
利点:AOF永続性を使用すると、Redisの耐久性が非常に高くなります。fsyncなし、毎秒fsyncごと、または書き込みコマンドが実行されるたびにfsyncなど、さまざまなfsync戦略を設定できます。AOFのデフォルトポリシーは1秒に1回のfsyncです。この構成では、Redisは引き続き良好なパフォーマンスを維持でき、障害が発生した場合でも1秒のデータしか失われません(fsyncはバックグラウンドスレッドで実行されるため、メインスレッドは、コマンドリクエストを処理するために引き続きハードワークできます)。
欠点:同じデータセットの場合、AOFファイルのボリュームは通常RDBファイルのボリュームよりも大きくなります。使用されるfsync戦略によっては、AOFはRDBよりも遅い場合があります。