redis クエリ速度を高速化する方法: 1. redis クエリは完全にメモリに基づいています; 2. redis のデータ構造は単純です; 3. redis は単一スレッドを使用します; 4. redis はマルチチャネル I を使用します/O 多重化モデル; 5. Redis は VM メカニズムを構築します。
#プログラマーのキャリアでは、キャッシュの設定で思い出し、同時実行の制御で思い出し、圧縮ストレージの実行で思い出します。 me of it, always Stay in the know 出発点ですが、なぜこれほど人気があるのかについての詳細な調査や要約はありません。最近は時間も場所も人も都合が良くて、細部まで整理してきました。
1. 完全にメモリに基づいているため、ほとんどのリクエストは純粋なメモリ操作であり、非常に高速です。データは HashMap と同様にメモリに保存されます。HashMap の利点は、検索と操作の時間計算量が O(1);
2 であることです。データ構造が単純で、データ操作も簡単です。シンプルです。Redis のデータ構造は特別に設計されています;
3. 不必要なコンテキストの切り替えや競合状態を回避するために単一のスレッドを使用します。 CPU に依存し、さまざまなロックを考慮する必要がありません。ロックのロックと解放の問題がなく、デッドロックによるパフォーマンスの消費がありません。
4. マルチチャネル I/O 多重化モデルを使用します。 、ノンブロッキング IO;
5. 使用される基礎となるモデルが異なり、基礎となる実装メソッドとクライアントとの通信用のアプリケーション プロトコルが異なります。Redis は、VM メカニズムを自身で直接構築します。システムがシステム関数を呼び出すと、一定の時間が無駄になります。移動とリクエスト;
上記の点は比較的理解しやすいです。以下では、マルチチャネル I/O 再利用モデルについて簡単に説明します。
(1) マルチチャネル I/O 多重化モデル
マルチチャネル I/O 多重化モデルは、select、poll、および epoll を使用して I/O を監視します。複数のストリームのイベントを同時に処理します。アイドル状態の場合、現在のスレッドはブロックされます。1 つ以上のストリームに I/O イベントがあると、ブロックされた状態から復帰するため、プログラムはすべてのストリームをポーリングします (epoll は、該当するストリームのみをポーリングします)。このアプローチにより、多くの無駄な操作が回避されます。
ここで、「複数」は複数のネットワーク接続を指し、「再利用」は同じスレッドを再利用することを指します。マルチチャネル I/O 多重化テクノロジの使用により、単一のスレッドで複数の接続リクエストを効率的に処理でき (ネットワーク IO の時間消費を最小限に抑えます)、Redis はメモリ内のデータを非常に高速に処理します。つまり、メモリ内の操作は行われません。 Redis のパフォーマンスに影響を与えるボトルネックになる主に、上記の点が Redis の高スループットに寄与しています。
以上がなぜ Redis クエリは速いのでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。