Redis (7) ------ Redis の永続性

Redis (7) ------ Redis の永続性

12、持久化

  • 面接や仕事では粘り強さが鍵となります
  • Redis はインメモリ データベースであるため、メモリ内のデータベースの状態がディスクに保存されていない場合、サーバー プロセスが終了すると、サーバー内のデータベースの状態も消えてしまいます。すべての Redis は永続化機能を提供します

12.1 RDB(Redisデータベース)

12.1.1 RDBとは

ここに画像の説明を挿入します

  • スナップショット: 指定された間隔でデータセットのメモリ内スナップショットをディスクに書き込みます

  • 復元すると、スナップショット ファイルがメモリに直接読み込まれます。

  • Redis は永続化のために別のサブプロセスを作成 (フォーク) します。最初にデータを一時ファイルに書き込みます。永続化プロセスが完了した後、この一時ファイルは最後に永続化されたファイルを置き換えるために使用されます。プロセス全体を通じて、メイン プロセスは IO 操作を実行しません。これにより、非常に高いパフォーマンスが保証されます。大規模なデータ リカバリが必要で、データ リカバリの整合性がそれほど重要でない場合は、RDB 方式の方が AOF 方式よりも効率的です。

  • RDB の欠点は、最後の永続化の後にダウンするとデータが失われる可能性があることです。

  • デフォルトは RDB ですが、通常、この構成を変更する必要はありません。

  • 実稼働環境では、このファイルをバックアップすることがあります。

  • rdb で保存されたファイルは次のとおりです。dump.rdb

  • 構成ファイルのスナップショットで構成する

ここに画像の説明を挿入します

  • 変更save 60 5: 60 秒以内にキーが 5 回変更される限り、RDB 操作がトリガーされます。
12.1.2 トリガーメカニズム
  • 1.saveルールが満たされると、rdb ルールが自動的にトリガーされます。
  • 2.flushallコマンドを実行すると、rdb ルールもトリガーされます
  • 3. redis を終了すると、rdb ファイルも生成されます。
12.1.3 rdbファイルの復元
  • rdb ファイルを redis 起動ディレクトリに置くだけで、redis が起動すると自動的にdump.rdbデータがチェックされ、復元されます。

  • 必要な場所を確認する

127.0.0.1:6379> config get dir
1) "dir"
# 如果在这个目录下存在 dump.rdb文件,启动就会自动恢复其中的数据
2) "/usr/local/bin" 
12.1.4 利点と欠点
  • アドバンテージ:
    • 大規模なデータ復旧に最適
    • データの整合性に対する要件が低い
  • 欠点:
    • 動作には一定の時間がかかるため、redis が予期せずクラッシュすると、最後に変更されたデータが失われます。
    • プロセスをフォークすると、一定量のコンテンツ領域が占有されます。

12.2 AOF(追加専用ファイル)

12.2.1 AOFとは

ここに画像の説明を挿入します

  • 各書き込み操作をログの形式で記録し、Redis によって実行されたすべての命令を記録します (読み取り操作は記録されません)。ファイルのみ追加できますが、書き換えはできません。Redis は起動時にファイルを読み取り、データを再構築します。つまり、 , Redisを再起動すれば根据日志文件的内容将写指令从前到后执行一次データ復旧作業は完了です。

  • AOF 保存ファイル:appendonly.aof

12.2.2 追加

ここに画像の説明を挿入します

  • スナップショット機能 (RDB) は耐久性があまり高くありません。何らかの理由で Redis に障害が発生すると、サーバーは最近書き込まれ、スナップショットに保存されていないデータを失います。バージョン 1.1 以降、Redis には完全に耐久性のある永続化メソッドが追加されています。AOF持久化

  • AOF を使用する場合は、構成ファイルを変更する必要があります。appendonly yesこれは、AOF を有効にすることを意味します。構成後、Redis を再起動して有効にします。

  • テスト: 5 つの新しいキーと値のペア k1 v1 を作成します...

  • appendonly.aofファイルを表示する

*2
$6
SELECT
$1
0
*3
$3
set
$2
k1
$2
v1
*3
$3
set
$2
k2
$2
v2
*3
$3
set
$2
k3
$2
v3
*3
$3
set
$2
k4
$2
v4
*3
$3
set
$2
k5
$2
v5
  • 文字化けした文字を手動で書き込んでから、redis サービスを開くと、接続に失敗します。
  • AOF ファイルにエラーがある場合、Redis は起動できないため、aof ファイルを変更する必要があります。
12.2.3 redis-check-aof
  • Redis は次のツールを提供します。redis-check-aof
  • コマンドを入力します:./redis-check-aof --fix appendonly.aof
  • この時、再度aofファイルを確認してみたところ、先ほど入力した文字化けは削除されており、AOFファイルは正常であり、Redisサービスも再起動できました。
12.2.4 書き換えルールの説明

ここに画像の説明を挿入します

  • AOFのデフォルトファイルは無限に追加されるためファイルがどんどん大きくなり、AOFファイルが64Mを超えるとファイルを書き換える処理がコピーされます。
12.2.5 利点と欠点
  • アドバンテージ:

    • すべての変更が同期され、ファイルの整合性が向上します。
    • 1 秒ごとに同期します。1 秒間のデータが失われる可能性があります
    • 決して同期しないでください。効率は最高です
  • 欠点がある

    • AOF ファイルはデータ ファイルに比べて RDB ファイルよりもはるかに大きく、修復速度も RDB より遅くなります。
    • AOF は RDB よりも遅いため、デフォルト構成は RDB 永続化です。

12.3 RDBとAOFの比較

アドバンテージ RDB AOF
起動優先度 低い 高い
音量 小さい 大きい
回復速度 素早い 遅い
データセキュリティ データが失われます 戦略に基づいて決定する
  • 一般的に言えば。PostgreSQL と同等のデータ セキュリティを実現するには、両方の永続化機能を同時に有効にする必要があります。
  • データを本当に大切にしているが、数分以内にデータが失われる可能性がある場合は、RDB 永続性を使用するだけで済みます。
  • 多くのユーザーは AOF 永続性のみを使用しますが、RDB スナップショットを定期的に生成することはデータベースのバックアップに非常に便利であり、RDB は AOF リストアよりも高速にデータ セットをリストアするため、これはお勧めできません。

おすすめ

転載: blog.csdn.net/weixin_44176393/article/details/123708533