ホームページ  >  記事  >  データベース  >  Redis 永続化のスナップショット メソッド (RDB) の詳細については、こちらをご覧ください。

Redis 永続化のスナップショット メソッド (RDB) の詳細については、こちらをご覧ください。

青灯夜游
青灯夜游転載
2020-03-31 10:23:252802ブラウズ

この記事では、Redis 永続化におけるスナップショット方式 (RDB) について紹介します。一定の参考値があるので、困っている友達が参考になれば幸いです。

Redis 永続化のスナップショット メソッド (RDB) の詳細については、こちらをご覧ください。

Redis はメモリ上で読み書きを行うため、パフォーマンスは高いですが、サーバーの再起動によりメモリ上のデータが失われます。 Redis の再起動時に元のデータをディスクから復元できるように、メモリ内のデータをディスクに保存する必要があります。このプロセス全体を Redis 永続化と呼びます。

Redis 永続化のスナップショット メソッド (RDB) の詳細については、こちらをご覧ください。
Memcached には永続化機能がないため、Redis の永続化も Redis と Memcached の主な違いの 1 つです。

1. いくつかの永続化メソッド

Redis の永続化には次の 3 つのメソッドがあります:

  • スナップショット メソッド(RDB、Redis Database)特定の瞬間のメモリ データをバイナリ形式でディスクに書き込みます。
  • ファイル追加メソッド (AOF、Append Only File) は、すべての操作コマンドを記録し、テキストとしてファイルに書き込みます。 form;
  • ハイブリッド永続化メソッド、Redis 4.0 以降の新しいメソッドです。ハイブリッド永続化は、RDB と AOF の利点を組み合わせたものです。書き込み時には、まず現在のデータをファイルの先頭に書き込みます。 RDB形式で保存し、以降の運用コマンドをAOF形式でファイルに保存することで、Redisの再起動速度を確保できるだけでなく、データ損失のリスクも軽減できます。

各永続性ソリューションには特定の使用シナリオがあるため、RDB 永続性から始めましょう。

2. RDB の概要

RDB (Redis Database) は、特定の瞬間のメモリ スナップショット (スナップショット) をバイナリ形式でディスクに書き込むプロセスです。

3. 永続化トリガー

RDB の永続化トリガー方法には、手動トリガーと自動トリガーの 2 種類があります。

1) 手動トリガー

手動トリガーの永続化操作には、savebgsave の 2 つがあります。それらの主な違いは、ブロックするかどうかに反映されます。 Redis メインスレッドの実行。

① save コマンド

クライアントで save コマンドを実行すると、Redis の永続化がトリガーされますが、同時に Redis はブロックされるまでブロック状態になります。 RDB は永続化されます。完了すると、他のクライアントから送信されたコマンドに応答するため、運用環境では を注意して使用する必要があります。

save コマンドは次のように使用されます。

Redis 永続化のスナップショット メソッド (RDB) の詳細については、こちらをご覧ください。

図からわかるように、

save を実行した後、 コマンドにより、永続化ファイル dump.rdb の変更時間が変更されます。これは、save が RDB 永続化を正常にトリガーしたことを意味します。

save コマンドの実行処理は下図のとおりです。

Redis 永続化のスナップショット メソッド (RDB) の詳細については、こちらをご覧ください。##② bgsave コマンド

bgsave (

save

コマンドとの最大の違いは、bgsave が子プロセスを fork() して永続化を実行することです。プロセス全体では、fork のみが実行されます。 () 子プロセス 短いブロッキングが発生する場合があります。子プロセスが作成された後、Redis のメイン プロセスは他のクライアントのリクエストに応答できます。プロセス全体をブロックする save コマンドと比較すると、明らかに、 bgsave コマンドの方が使用に適しています。 bgsave
コマンドは次の図のように使用されます。

Redis 永続化のスナップショット メソッド (RDB) の詳細については、こちらをご覧ください。##bgsave

実行プロセスは次のとおりです。下の図:

2) 自動トリガーRedis 永続化のスナップショット メソッド (RDB) の詳細については、こちらをご覧ください。

RDB の手動トリガー方法について説明した後、RDB 永続性を自動的にトリガーする方法を見てみましょう。

RDB の自動永続化は主に次の状況で発生します。

① save m n

save m n

は、n 個のキーが m 秒以内に変更されると、永続化が自動的にトリガーされることを意味します。

パラメータ m および n は、Redis 構成ファイルにあります。たとえば、save 60 1 は、60 秒以内に少なくとも 1 つのキーが変更された場合に、RDB 永続化がトリガーされることを示します。
永続性を自動的にトリガーする: 本質的には、設定されたトリガー条件が満たされた場合に、Redis が bgsave コマンドを 1 回自動的に実行するということです。
注: 複数の save m n コマンドを設定すると、いずれかの条件が満たされた場合に永続化がトリガーされます。 たとえば、次の 2 つの save m n コマンドを設定します。

  • save 60 10
  • save 600 1

Redis キーの値が 60 秒以内に 10 回変更されると、永続化がトリガーされます。Redis キーの値が 60 秒以内に変更されると、永続化がトリガーされます。キー値の変更が 10 回未満の場合、Redis は Redis のキー値が 600 秒以内に少なくとも 1 回変更されたかどうかを判断し、変更された場合には永続化がトリガーされます。

②lushall

flushall コマンドは、Redis データベースをクリアするために使用されます。運用環境では注意して使用する必要があります。Redis が flushall# を実行するとき、 ## コマンドを実行すると、自動永続化がトリガーされ、RDB ファイルがクリアされます。 実行結果は以下の図に示されています。

Redis 永続化のスナップショット メソッド (RDB) の詳細については、こちらをご覧ください。

③ マスター/スレーブ同期トリガー

Redis マスター/スレーブ レプリケーションでは、スレーブがノードが完全なレプリケーション操作を実行すると、マスター ノードは

bgsave コマンドを実行し、RDB ファイルをスレーブ ノードに送信します。このプロセスにより、Redis 永続性が自動的にトリガーされます。

4. 設定手順

RDB の設定を適切に行うことで、Redis を効率的かつ安定的に動作させることができます。

RDB 構成パラメーターは Redis 構成ファイルにあります。具体的な内容は次のとおりです:

# RDB 保存的条件
save 900 1
save 300 10
save 60 10000

# bgsave 失败之后,是否停止持久化数据到磁盘,yes 表示停止持久化,no 表示忽略错误继续写文件。
stop-writes-on-bgsave-error yes

# RDB 文件压缩
rdbcompression yes

# 写入文件和读取文件时是否开启 RDB 文件检查,检查是否有无损坏,如果在启动是检查发现损坏,则停止启动。
rdbchecksum yes

# RDB 文件名
dbfilename dump.rdb

# RDB 文件目录
dir ./

より重要なパラメーターは次のとおりです。


① save パラメータRDB の永続化条件をトリガーするパラメータを設定するために使用され、保存条件が満たされた場合にデータがハードディスクに永続化されます。
デフォルト設定の説明は次のとおりです:

    save 900 1: 900 秒以内に少なくとも 1 つのキー値が変更された場合、データがハードディスクに保存されることを示します。
  • save 300 10: 300 秒以内に少なくとも 10 個のキー値が変更された場合、データがハードディスクに永続化されることを示します;
  • save 60 10000: 少なくとも 10,000 個のキー値が変更された場合にデータが永続化されることを示します60 秒以内に変更すると、データはハードドライブに保存されます。
② rdbcompression パラメータ

デフォルト値は yes
で、RDB ファイル圧縮を有効にすることを意味します。Redis は圧縮に LZF アルゴリズムを使用します。ファイル圧縮に CPU パフォーマンスを消費したくない場合は、この機能をオフに設定できますが、この機能の欠点は、ファイルの保存に多くのディスク容量が必要になることです。 ③ rdbchecksum パラメータ
デフォルト値は yes
で、ファイルの書き込みおよび読み取り時に RDB ファイルチェックを有効にし、破損がないかどうかをチェックするかどうかを示します。起動中に破損が発見された場合は起動を停止させていただきます。 5. 構成クエリ

コマンドを使用して、Redis の現在の構成パラメーターをクエリできます。クエリコマンドの形式は:

config get xxx

たとえば、RDB ファイルのストレージ名の設定を取得したい場合は、config get dbfilename を使用できます。

Redis 永続化のスナップショット メソッド (RDB) の詳細については、こちらをご覧ください。RDB のファイル ディレクトリをクエリするには、コマンド

config get dir

を使用します。

Redis 永続化のスナップショット メソッド (RDB) の詳細については、こちらをご覧ください。6. 構成設定

以下の 2 つの RDB 構成を設定します。方法:

Redis 構成ファイルを手動で変更します。
  • コマンド ライン設定を使用します。たとえば、
  • config set dir "/usr/data"
  • を使用します。 RDB格納ディレクトリを変更します。
Note

: Redis 構成ファイルを手動で変更する方法はグローバルに有効です。つまり、Redis サーバーの再起動によって設定パラメータが失われることはなく、コマンド変更方法を使用します。 、Redisを再起動すると、失われます。ただし、Redis 構成ファイルを手動で変更してすぐに有効にする場合は、Redis サーバーを再起動する必要がありますが、コマンド方式では Redis サーバーを再起動する必要はありません。

ヒント: Redis 構成ファイルは Redis インストール ディレクトリのルート パスにあり、デフォルト名は redis.conf です。

7.RDB ファイルのリカバリ

Redis サーバーの起動時に、RDB ファイル dump.rdb が Redis ルート ディレクトリに存在する場合、Redis は自動的に RDB ファイルをロードして永続データを復元します。
ルート ディレクトリに dump.rdb ファイルがない場合は、まず dump.rdb ファイルを Redis のルート ディレクトリに移動してください。
RDB ファイルがロードされているかどうかを確認する
Redis には、RDB ファイルがロードされているかどうかを示す起動時のログ情報があります。Redis 起動コマンド src/redis- を実行します。以下の図に示すように、server redis.conf:

Redis 永続化のスナップショット メソッド (RDB) の詳細については、こちらをご覧ください。

ログから、Redis サービスがRDBファイルは起動時に正常に起動されました。

ヒント: Redis サーバーが RDB ファイルをロードしている間、ロード作業が完了するまでブロックされます。

8.RDB のメリットとデメリット

1) RDB のメリット

  • RDB コンテンツはバイナリ データであり、メモリ使用量が少なく、よりコンパクトで、より適しています。バックアップ ファイルとして;
  • RDB は災害復旧に非常に役立ちます。コンパクトなファイルなので、Redis サービスの回復のためにリモート サーバーにより速く転送できます。
  • RDB は Redis をより優れたレベルに改善できます。エクステント 実行速度は、Redis メイン プロセスがデータをディスクに永続化するたびに子プロセスを fork() するためです。Redis メイン プロセスはディスク I/O などの操作を実行しません。
  • AOF を使用すると、RDB ファイルは形式のファイルよりも高速に再起動できます。

2) RDB のデメリット

  • RDB は一定期間のデータしか保存できないため、Redis サービスが誤って途中で終了すると、一定期間分のデータが保存されなくなります。 Redis データ;
  • RDB では、子プロセスを使用してデータをディスク上に保持するために頻繁に fork() が必要です。データ セットが大きい場合、Fork() は時間がかかる可能性があり、データ セットが大きく CPU パフォーマンスが低い場合には、Redis が数ミリ秒、さらには 1 秒間クライアントへのサービスを停止する可能性があります。

9. 永続性を無効にする

永続性を無効にすると、Redis の実行効率が向上します。データ損失を気にしない場合は、クライアントへの接続中に実行できます次の図に示すように、config set save "" コマンドを使用して Redis の永続性を無効にすることができます:
Redis 永続化のスナップショット メソッド (RDB) の詳細については、こちらをご覧ください。

10. 概要

この記事を通じて、次のことが得られます。ご存知のとおり、RDB の永続化には手動トリガーと自動トリガーの 2 つの方法があり、保存ファイルが小さく Redis 起動時のデータ復旧が早いというメリットがありますが、デメリットとしてはデータ損失のリスクがあります。 RDBファイルのリストアも非常に簡単で、RDBファイルをRedisのルートディレクトリに置くだけで、Redis起動時に自動的にデータが読み込まれてリストアされます。

11. 考えられる質問

Redis サーバーの CPU 使用率が高すぎる場合、原因は何でしょうか?コメント欄に回答を書いていただければ幸いです。

12.参考文献と謝辞

https://redis.io/topics/persistence
https://blog.csdn.net/ qq_36318234/article/details/79994133
https://www.cnblogs.com/ysocean/p/9114268.html
https://www.cnblogs. com/wdliu/p/9377278.html

この記事は、https://segmentfault.com/a/1190000021036574

から転載されています。Redis の詳細については、次の点にご注意ください。 redis 入門チュートリアル 列。

以上がRedis 永続化のスナップショット メソッド (RDB) の詳細については、こちらをご覧ください。の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はsegmentfault.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。