この記事では、Redis 永続化におけるスナップショット方式 (RDB) について紹介します。一定の参考値があるので、困っている友達が参考になれば幸いです。
Redis はメモリ上で読み書きを行うため、パフォーマンスは高いですが、サーバーの再起動によりメモリ上のデータが失われます。 Redis の再起動時に元のデータをディスクから復元できるように、メモリ内のデータをディスクに保存する必要があります。このプロセス全体を Redis 永続化と呼びます。
Memcached には永続化機能がないため、Redis の永続化も Redis と Memcached の主な違いの 1 つです。
Redis の永続化には次の 3 つのメソッドがあります:
各永続性ソリューションには特定の使用シナリオがあるため、RDB 永続性から始めましょう。
RDB (Redis Database) は、特定の瞬間のメモリ スナップショット (スナップショット) をバイナリ形式でディスクに書き込むプロセスです。
RDB の永続化トリガー方法には、手動トリガーと自動トリガーの 2 種類があります。
手動トリガーの永続化操作には、save
と bgsave
の 2 つがあります。それらの主な違いは、ブロックするかどうかに反映されます。 Redis メインスレッドの実行。
クライアントで save
コマンドを実行すると、Redis の永続化がトリガーされますが、同時に Redis はブロックされるまでブロック状態になります。 RDB は永続化されます。完了すると、他のクライアントから送信されたコマンドに応答するため、運用環境では を注意して使用する必要があります。
save コマンドは次のように使用されます。
save を実行した後、 コマンドにより、永続化ファイル
dump.rdb の変更時間が変更されます。これは、
save が RDB 永続化を正常にトリガーしたことを意味します。
save コマンドの実行処理は下図のとおりです。
##② bgsave コマンド
コマンドとの最大の違いは、bgsave
が子プロセスを fork() して永続化を実行することです。プロセス全体では、fork のみが実行されます。 () 子プロセス 短いブロッキングが発生する場合があります。子プロセスが作成された後、Redis のメイン プロセスは他のクライアントのリクエストに応答できます。プロセス全体をブロックする save
コマンドと比較すると、明らかに、 bgsave
コマンドの方が使用に適しています。 bgsave
コマンドは次の図のように使用されます。
##bgsave
実行プロセスは次のとおりです。下の図:2) 自動トリガー
RDB の手動トリガー方法について説明した後、RDB 永続性を自動的にトリガーする方法を見てみましょう。① save m n
パラメータ m および n は、Redis 構成ファイルにあります。たとえば、save 60 1
は、60 秒以内に少なくとも 1 つのキーが変更された場合に、RDB 永続化がトリガーされることを示します。
永続性を自動的にトリガーする: 本質的には、設定されたトリガー条件が満たされた場合に、Redis が bgsave
コマンドを 1 回自動的に実行するということです。
注: 複数の save m n コマンドを設定すると、いずれかの条件が満たされた場合に永続化がトリガーされます。 たとえば、次の 2 つの save m n コマンドを設定します。
Redis キーの値が 60 秒以内に 10 回変更されると、永続化がトリガーされます。Redis キーの値が 60 秒以内に変更されると、永続化がトリガーされます。キー値の変更が 10 回未満の場合、Redis は Redis のキー値が 600 秒以内に少なくとも 1 回変更されたかどうかを判断し、変更された場合には永続化がトリガーされます。
flushall
コマンドは、Redis データベースをクリアするために使用されます。運用環境では注意して使用する必要があります。Redis が flushall# を実行するとき、 ## コマンドを実行すると、自動永続化がトリガーされ、RDB ファイルがクリアされます。
実行結果は以下の図に示されています。
bgsave コマンドを実行し、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 の永続化条件をトリガーするパラメータを設定するために使用され、保存条件が満たされた場合にデータがハードディスクに永続化されます。
デフォルト設定の説明は次のとおりです:
デフォルト値は yes
で、RDB ファイル圧縮を有効にすることを意味します。Redis は圧縮に LZF アルゴリズムを使用します。ファイル圧縮に CPU パフォーマンスを消費したくない場合は、この機能をオフに設定できますが、この機能の欠点は、ファイルの保存に多くのディスク容量が必要になることです。 ③ rdbchecksum パラメータ
デフォルト値は yes
で、ファイルの書き込みおよび読み取り時に RDB ファイルチェックを有効にし、破損がないかどうかをチェックするかどうかを示します。起動中に破損が発見された場合は起動を停止させていただきます。 5. 構成クエリ
たとえば、RDB ファイルのストレージ名の設定を取得したい場合は、config get dbfilename
を使用できます。
RDB のファイル ディレクトリをクエリするには、コマンド
config get dir を使用します。
6. 構成設定
: Redis 構成ファイルを手動で変更する方法はグローバルに有効です。つまり、Redis サーバーの再起動によって設定パラメータが失われることはなく、コマンド変更方法を使用します。 、Redisを再起動すると、失われます。ただし、Redis 構成ファイルを手動で変更してすぐに有効にする場合は、Redis サーバーを再起動する必要がありますが、コマンド方式では Redis サーバーを再起動する必要はありません。 Redis サーバーの起動時に、RDB ファイル dump.rdb が Redis ルート ディレクトリに存在する場合、Redis は自動的に RDB ファイルをロードして永続データを復元します。
ログから、Redis サービスがRDBファイルは起動時に正常に起動されました。 永続性を無効にすると、Redis の実行効率が向上します。データ損失を気にしない場合は、クライアントへの接続中に実行できます この記事を通じて、次のことが得られます。ご存知のとおり、RDB の永続化には手動トリガーと自動トリガーの 2 つの方法があり、保存ファイルが小さく Redis 起動時のデータ復旧が早いというメリットがありますが、デメリットとしてはデータ損失のリスクがあります。 RDBファイルのリストアも非常に簡単で、RDBファイルをRedisのルートディレクトリに置くだけで、Redis起動時に自動的にデータが読み込まれてリストアされます。 Redis サーバーの CPU 使用率が高すぎる場合、原因は何でしょうか?コメント欄に回答を書いていただければ幸いです。 https://redis.io/topics/persistence この記事は、https://segmentfault.com/a/1190000021036574 から転載されています。Redis の詳細については、次の点にご注意ください。 redis 入門チュートリアル 列。 ヒント: Redis 構成ファイルは Redis インストール ディレクトリのルート パスにあり、デフォルト名は redis.conf です。
7.RDB ファイルのリカバリ
ルート ディレクトリに dump.rdb ファイルがない場合は、まず dump.rdb ファイルを Redis のルート ディレクトリに移動してください。
RDB ファイルがロードされているかどうかを確認する
Redis には、RDB ファイルがロードされているかどうかを示す起動時のログ情報があります。Redis 起動コマンド src/redis- を実行します。以下の図に示すように、server redis.conf
: ヒント: Redis サーバーが RDB ファイルをロードしている間、ロード作業が完了するまでブロックされます。
8.RDB のメリットとデメリット
1) RDB のメリット
2) RDB のデメリット
9. 永続性を無効にする
次の図に示すように、config set save ""
コマンドを使用して Redis の永続性を無効にすることができます: 10. 概要
11. 考えられる質問
12.参考文献と謝辞
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
以上がRedis 永続化のスナップショット メソッド (RDB) の詳細については、こちらをご覧ください。の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。