この記事では、redis における RDB と AOF 永続性の原則について説明します。それらの長所と短所は何ですか?どれを使用すべきかを分析してください。お役に立てれば幸いです!
Redis は、RDB と AOF の 2 つの永続化ソリューションを提供します。
RDB: Redis のメモリ内データ スナップショットを生成します。バイナリ ファイル dumpr.rdb
AOF: クエリを除くすべての Redis 書き込みコマンドを記録し、Redis サービスの開始時にこれらのコマンドを再実行します。
RDB 永続性
デフォルトでは、Redis はデータを RDB スナップショットの形式でハードディスクに一定期間永続化し、保存します。 dumpr.rdb
バイナリ ファイルとしてそれらを保存します。 [関連する推奨事項: Redis ビデオ チュートリアル ]
動作原理の簡単な紹介:
Redis を永続化する必要がある場合、Redis はフォークします。子プロセスの場合、子プロセスはディスク上の一時 RDB ファイルにデータを書き込みます。子プロセスが一時ファイルの書き込みを完了したら、元の RDB を置き換えます。これの利点は、コピーオンライト
ができることです。
もちろん、save
または bgsave
を手動で (非同期的に) 実行して RDB ファイルを生成することもできます。
redis.conf のデフォルト設定
save 900 1 save 300 10 save 60 10000
- 900 秒以内に複数のキーが変更された場合、スナップショットの保存が開始されます。
- 300 秒以内、それ以上の場合はスナップショットの保存が開始されます。 10 個未満のキーが変更されると、スナップショットの保存が開始されます。
- 60 秒以内に、10,000 個のキーが変更されると、スナップショットの保存が開始されます。
RDBスナップショット コマンド
デフォルトでは、Redis はデータベース スナップショットを dump.rdb という名前のバイナリ ファイルに保存します。
「データ セットに N 秒以内に少なくとも M 個の変更がある」という条件が満たされた場合に、データ セットを自動的に保存するように Redis を設定できます。
SAVE
または BGSAVE
を呼び出して、Redis にデータセットを手動で保存させることもできます。
たとえば、次の設定では、「60 秒以内に少なくとも 1000 個のキーが変更された」という条件を満たした場合に、Redis がデータ セットを自動的に保存できるようになります。永続化 この方法はスナップショットと呼ばれます。
#RDB 作成の原則Redis が dump.rdb ファイルを保存する必要がある場合、サーバーは次の操作を実行します。
Redis は fork() を呼び出し、親プロセスと子プロセスの両方を持ちます。
- サブプロセスは、データ セットを一時 RDB ファイルに書き込みます。
- 子プロセスが新しい RDB ファイルへの書き込みを完了すると、Redis は元の RDB ファイルを新しい RDB ファイルに置き換え、古い RDB ファイルを削除します。
- この動作方法により、Redis はコピーオンライト メカニズムの恩恵を受けることができます。
RDB は、ある時点の Redis データを保存する比較的コンパクトなファイルです。バックアップと災害復旧のために。
たとえば、過去 24 時間以内に 1 時間ごとに RDB ファイルをバックアップしたり、毎月毎日 RDB ファイルをバックアップしたりできます。これにより、問題が発生した場合でも、いつでもデータ セットを別のバージョンに復元できます。 RDB の欠点サーバー障害時のデータ損失を最小限に抑える必要がある場合、RDB は向きません。 Redis では、さまざまなセーブポイントを設定して RDB ファイルを保存する頻度を制御できますが、RDB ファイルはデータセット全体の状態を保存する必要があるため、これは簡単な操作ではありません。したがって、少なくとも 5 分に 1 回は RDB ファイルを保存できます。この場合、障害が発生すると、数分間のデータが失われる可能性があります。
AOF 永続性
永続化には AOF を使用します。各書き込みコマンドは、write
関数を通じてappendonly.aof# に追加されます。 # ファイル。 AOF は完全な永続性を実現できます。構成ファイルでオンにする必要があるだけです (デフォルトは no)。
appendfsync yes
AOF をオンにした後、Redis がコマンドを実行するたびに、データを変更すると、そのデータが AOF ファイルに追加され、Redis が再起動すると、AOF ファイルが読み取られて「再生」され、Redis がシャットダウンされる直前の状態が復元されます。
AOF 構成
Redis がデータをディスクに fsync する頻度を構成できます。 redis.conf のデフォルト設定
save 60 1000
には 3 つのオプションがあります:
1、新しいコマンドが AOF ファイルに追加されるたびに fsync を実行します : 非常に遅く、非常に安全です。
2、fsync は 1 秒に 1 回 : 十分な速度 (RDB 永続性を使用するのとほぼ同じ) で、障害が発生しても失われるデータは 1 秒だけです。
3、fsyncは行わない: データの処理をオペレーティング システムに任せます。より高速ですが安全性は低いオプションです。
推奨 (およびデフォルト) の対策は、1 秒に 1 回 fsync することです。この fsync 戦略は、速度とセキュリティの両方を考慮できます。
AOF 作成原理
AOF の書き換えは RDB スナップショットの作成と同じであり、どちらもコピーオンライト メカニズムを巧みに利用しています。
以下は AOF 書き換えの実行手順です。:
Redis は fork() を実行し、親プロセスと子プロセスの両方を持ちます。
子プロセスは、新しい AOF ファイルの内容を一時ファイルに書き込み始めます。
新しく実行されたすべての書き込みコマンドについて、親プロセスはそれらをメモリ キャッシュに蓄積し、これらの変更を既存の AOF ファイルの末尾に追加します。こうすることで、書き換えの途中でシャットダウンが発生した場合でも、既存の AOF ファイルは引き続き安全です。
子プロセスが書き換え作業を完了すると、親プロセスにシグナルを送信し、シグナルを受信した親プロセスは、メモリ キャッシュ内のすべてのデータを新しい AOF ファイルの末尾に追加します。 ###### 終わり! Redis は古いファイルを新しいファイルにアトミックに置き換え、それ以降のすべてのコマンドは新しい AOF ファイルの末尾に直接追加されます。
AOF の利点1. 永続化に AOF を使用すると、fsync なし、1 秒に 1 回の fsync など、さまざまな fsync 戦略を設定できます。 、書き込みコマンドが実行されるたびに fsync を実行します。
AOF のデフォルト ポリシーは、fsync を 1 秒に 1 回行うことです。この構成でも、Redis は良好なパフォーマンスを維持でき、障害が発生した場合でも、失われるデータは最大 1 秒のみです。
fsync はバックグラウンド スレッドで実行されるため、メイン スレッドはコマンド リクエストの処理に懸命に取り組み続けることができます。
2. AOF ファイルは、追加操作のみを実行するログ ファイルです。新しいファイルを生成した後に置き換えられるものではありません。たとえ、何らかの理由 (書き込み時など) でログに不完全なコマンドが含まれていたとしても、ディスクがいっぱいである、書き込みが途中で停止するなど)場合は、redis-check-aof ツールを使用してこの問題を簡単に解決することもできます。
3、Redis は、AOF ファイルのサイズが大きくなりすぎると、バックグラウンドで AOF を自動的に書き換えることができます。書き換え後の新しい AOF ファイルには、現在のデータ セットを復元するために必要な最小限のコマンド セットが含まれています。
Redis の書き換えでは新しい AOF ファイルが作成されるため、書き換え操作全体は絶対に安全です。書き換えプロセス中にエラーが発生した場合でも、書き換えプロセス中はコマンドが既存の古い AOF ファイルに追加され続けます。シャットダウンしても、既存の古い AOF ファイルは失われません。新しい AOF ファイルが作成されると、Redis は古い AOF ファイルから新しい AOF ファイルに切り替えて、新しい AOF ファイルへの追加を開始します。
4. AOF ファイルには、データベース上で実行されたすべての書き込み操作が順序どおりに保存されます。これらの書き込み操作は Redis プロトコルの形式で保存されるため、AOF ファイルの内容は非常に読みやすくなっています。解析(パース)も簡単です。 AOF ファイルのエクスポートも非常に簡単です。たとえば、誤って _FLUSH ALL_ (Redis サーバー全体のデータをクリア (すべてのデータベースのすべてのキーを削除)) コマンドを実行した場合でも、AOF ファイルが上書きされていない限り、エクスポートできます。その後、サーバーを停止し、AOF ファイルの末尾にある
FLUSHALLコマンドを削除し、Redis を再起動する限り、データ セットを FLUSHALL が実行される前の状態に復元できます。実行されました。
AOF の欠点同じデータ セットの場合、通常、AOF ファイルのサイズは RDB ファイルのサイズよりも大きくなります。
使用される fsync 戦略によっては、AOF は RDB よりも遅くなる可能性があります。通常の状況では、1 秒あたりの fsync パフォーマンスは依然として非常に高く、fsync をオフにすると、負荷が重い場合でも AOF を RDB と同じ速度にすることができます。
ただし、巨大な書き込み負荷を処理する場合、RDB はより保証された最大レイテンシー (レイテンシー) を提供できます。
RDB と AOF の違いRDB の永続性とは、指定された時間間隔内にメモリ内のデータ セットのスナップショットをディスクに書き込むことを指します。子プロセスをフォークし、最初にデータ セットを一時ファイルに書き込みます。書き込みが成功すると、前のファイルが置き換えられ、バイナリ圧縮を使用して保存されます。
AOF 永続性は、サーバーによって処理されたすべての書き込みおよび削除操作をログ形式で記録します。クエリ操作は記録されません。レコードはテキスト形式で追加されます。ファイルを開いて詳細な操作を確認できます。記録。
RDB と AOF どちらを使用すればよいですか?データを非常に重視していても、数分以内にデータが失われる可能性がある場合は、RDB 永続性を使用するだけで済みます。
AOF は、Redis によって実行されるすべてのコマンドをディスクに追加します。大量の書き込みを処理すると、Redis のパフォーマンスが低下します。受け入れられるかどうかはわかりません。
データベースのバックアップと災害復旧:
RDB スナップショットを定期的に生成すると、データベースのバックアップに非常に便利で、RDB は AOF よりも速くデータ セットを復元します。
Redis は RDB と AOF を同時に開くことをサポートしており、システムの再起動後、Redis は AOF を使用したデータの回復を優先するため、データ損失が最小限になります。
AOF BGREWRITEAOF リライト
AOF はファイルの末尾にコマンドを継続的に追加することで機能するため、書き込まれたコマンドの数が増加し続けると、AOF ファイルサイズもどんどん大きくなっていきます。
たとえば、
カウンターに対して INCR を 100 回呼び出す場合、カウンターの現在の値を保存するためだけに、AOF ファイルには Use 100 が必要です。レコード (エントリ)。
ただし、実際には、カウンターの現在値を保存するには SET コマンドを 1 つだけ使用するだけで十分で、残りの 99 レコードは実際には冗長です。
この状況に対処するために、Redis は興味深い機能 をサポートしています。サービス クライアントを中断せずに AOF ファイルを再構築できます。
BG REWRITE AOF
コマンドを実行すると、Redis によって新しい AOF ファイルが生成されます。このファイルには、現在のデータ セットを再構築するために必要な最小限のコマンドが含まれています。
Redis 2.2 では、BGREWRITEAOF
コマンドを手動で実行する必要があります。Redis 2.4 では、AOF 書き換えを自動的にトリガーできます。詳細については、2.4 のサンプル構成ファイルを参照してください。
Redis データのバックアップ
ディスク障害、ノード障害、その他の問題によりデータが消失する可能性があり、バックアップを怠ると非常に危険です。
Redis は、サーバーの実行中に RDB ファイルをコピーできるため、データのバックアップに非常に適しています。RDB ファイルが作成されると、変更は加えられません。サーバーが新しい RDB ファイルを作成する場合、まずファイルの内容を一時ファイルに保存し、一時ファイルが書き込まれると、プログラムは rename(2) を使用して元の RDB ファイルを一時ファイルにアトミックに置き換えます。
これは、RDB ファイルをいつでも安全にコピーできることを意味します。
以下は私たちの提案です:
1. RDB ファイルを 1 時間ごとにフォルダーにバックアップする定期タスク (cron ジョブ) を作成し、それを毎時間バックアップします。 RDB ファイルを別のフォルダーにバックアップします。
2. スナップショット バックアップに対応する日付と時刻の情報があることを確認してください。通常のタスク スクリプトを実行するたびに、find コマンドを使用して期限切れのスナップショットを削除します。 48 時間。過去 1 か月または 2 か月の 1 時間ごとのスナップショットおよび毎日のスナップショットも保持できます。
3. 少なくとも 1 日に 1 回は、データ センターの外部、または少なくとも Redis サーバーを実行している物理マシンの外部で RDB をバックアップします。
プログラミング関連の知識について詳しくは、プログラミング ビデオをご覧ください。 !
以上がRDB と AOF 永続性の簡単な分析、利点と欠点は何ですか?選び方は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

Redisのコア関数は、高性能のメモリ内データストレージおよび処理システムです。 1)高速データアクセス:Redisはデータをメモリに保存し、マイクロ秒レベルの読み取り速度と書き込み速度を提供します。 2)豊富なデータ構造:文字列、リスト、コレクションなどをサポートし、さまざまなアプリケーションシナリオに適応します。 3)永続性:RDBとAOFを介してディスクにデータを持続します。 4)サブスクリプションを公開:メッセージキューまたはリアルタイム通信システムで使用できます。

Redisは、次のようなさまざまなデータ構造をサポートしています。1。文字列、単一価値データの保存に適しています。 2。キューやスタックに適したリスト。 3.非重複データの保存に使用されるセット。 4。ランキングリストと優先キューに適した注文セット。 5。オブジェクトまたは構造化されたデータの保存に適したハッシュテーブル。

Redisカウンターは、Redisキー価値ペアストレージを使用して、カウンターキーの作成、カウントの増加、カウントの減少、カウントのリセット、およびカウントの取得など、カウント操作を実装するメカニズムです。 Redisカウンターの利点には、高速速度、高い並行性、耐久性、シンプルさと使いやすさが含まれます。ユーザーアクセスカウント、リアルタイムメトリック追跡、ゲームのスコアとランキング、注文処理などのシナリオで使用できます。

Redisコマンドラインツール(Redis-Cli)を使用して、次の手順を使用してRedisを管理および操作します。サーバーに接続し、アドレスとポートを指定します。コマンド名とパラメーターを使用して、コマンドをサーバーに送信します。ヘルプコマンドを使用して、特定のコマンドのヘルプ情報を表示します。 QUITコマンドを使用して、コマンドラインツールを終了します。

Redisクラスターモードは、シャードを介してRedisインスタンスを複数のサーバーに展開し、スケーラビリティと可用性を向上させます。構造の手順は次のとおりです。異なるポートで奇妙なRedisインスタンスを作成します。 3つのセンチネルインスタンスを作成し、Redisインスタンスを監視し、フェールオーバーを監視します。 Sentinel構成ファイルを構成し、Redisインスタンス情報とフェールオーバー設定の監視を追加します。 Redisインスタンス構成ファイルを構成し、クラスターモードを有効にし、クラスター情報ファイルパスを指定します。各Redisインスタンスの情報を含むnodes.confファイルを作成します。クラスターを起動し、CREATEコマンドを実行してクラスターを作成し、レプリカの数を指定します。クラスターにログインしてクラスター情報コマンドを実行して、クラスターステータスを確認します。作る

Redisのキューを読むには、キュー名を取得し、LPOPコマンドを使用して要素を読み、空のキューを処理する必要があります。特定の手順は次のとおりです。キュー名を取得します:「キュー:キュー」などの「キュー:」のプレフィックスで名前を付けます。 LPOPコマンドを使用します。キューのヘッドから要素を排出し、LPOP Queue:My-Queueなどの値を返します。空のキューの処理:キューが空の場合、LPOPはnilを返し、要素を読む前にキューが存在するかどうかを確認できます。

RedisクラスターでのZsetの使用:Zsetは、要素をスコアに関連付ける順序付けられたコレクションです。シャード戦略:a。ハッシュシャーディング:ZSTキーに従ってハッシュ値を分配します。 b。範囲シャード:要素スコアに従って範囲に分割し、各範囲を異なるノードに割り当てます。操作の読み取りと書き込み:a。読み取り操作:ZSetキーが現在のノードのシャードに属している場合、ローカルで処理されます。それ以外の場合は、対応するシャードにルーティングされます。 b。書き込み操作:Zsetキーを保持しているシャードに常にルーティングされます。

Redisデータをクリアする方法:Flushallコマンドを使用して、すべての重要な値をクリアします。 FlushDBコマンドを使用して、現在選択されているデータベースのキー値をクリアします。 [選択]を使用してデータベースを切り替え、FlushDBを使用して複数のデータベースをクリアします。 DELコマンドを使用して、特定のキーを削除します。 Redis-CLIツールを使用してデータをクリアします。


ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

MinGW - Minimalist GNU for Windows
このプロジェクトは osdn.net/projects/mingw に移行中です。引き続きそこでフォローしていただけます。 MinGW: GNU Compiler Collection (GCC) のネイティブ Windows ポートであり、ネイティブ Windows アプリケーションを構築するための自由に配布可能なインポート ライブラリとヘッダー ファイルであり、C99 機能をサポートする MSVC ランタイムの拡張機能が含まれています。すべての MinGW ソフトウェアは 64 ビット Windows プラットフォームで実行できます。

SublimeText3 Linux 新バージョン
SublimeText3 Linux 最新バージョン

DVWA
Damn Vulnerable Web App (DVWA) は、非常に脆弱な PHP/MySQL Web アプリケーションです。その主な目的は、セキュリティ専門家が法的環境でスキルとツールをテストするのに役立ち、Web 開発者が Web アプリケーションを保護するプロセスをより深く理解できるようにし、教師/生徒が教室環境で Web アプリケーションを教え/学習できるようにすることです。安全。 DVWA の目標は、シンプルでわかりやすいインターフェイスを通じて、さまざまな難易度で最も一般的な Web 脆弱性のいくつかを実践することです。このソフトウェアは、

AtomエディタMac版ダウンロード
最も人気のあるオープンソースエディター

Safe Exam Browser
Safe Exam Browser は、オンライン試験を安全に受験するための安全なブラウザ環境です。このソフトウェアは、あらゆるコンピュータを安全なワークステーションに変えます。あらゆるユーティリティへのアクセスを制御し、学生が無許可のリソースを使用するのを防ぎます。
