ホームページ  >  記事  >  データベース  >  なぜredisは速いのでしょうか?

なぜredisは速いのでしょうか?

(*-*)浩
(*-*)浩オリジナル
2019-11-21 13:32:167357ブラウズ

なぜredisは速いのでしょうか?

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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。