ホームページ  >  記事  >  データベース  >  Redis がシングルスレッドを使用するのはなぜですか?なぜそんなに速いのでしょうか?

Redis がシングルスレッドを使用するのはなぜですか?なぜそんなに速いのでしょうか?

青灯夜游
青灯夜游転載
2021-11-01 10:08:022110ブラウズ

redis のシングル スレッドとは何ですか? Redis がシングルスレッドを使用するのはなぜですか?シングルスレッド Redis はなぜこれほど高速なのでしょうか?次の記事では分析を行っていますので、お役に立てれば幸いです。

Redis がシングルスレッドを使用するのはなぜですか?なぜそんなに速いのでしょうか?

1. 基本概念

  • Redis のシングル スレッドとは (コア関数はすべての関数ではなく単一スレッド)

    • #Redis のネットワーク IO とキーと値のペアの読み取りと書き込みは 1 つのスレッド (Redis のコア サービス) で完了します

    • redis のその他の機能は追加のスレッドによって実行されます

      ##永続性
        #非同期削除
      • ##クラスター データの同期
      • ##[関連する推奨事項:
      Redis ビデオ チュートリアル
    • ]
2. Redis が単一スレッドを使用する理由

マルチスレッドのオーバーヘッド

    マルチスレッドを使用すると、システムのスループット (リクエストあたり) が向上し、システムのスケーラビリティが向上します
    • # スレッド数が無制限に増加すると、スループットが低下します。
    • 共有リソースは、共有データ構造など、複数のスレッドによって同時にアクセスされます。
    • スレッドの安全性により、パフォーマンスが犠牲になります

      粗いロックによりすべてのシリアル化が発生し、スレッドの増加に伴ってシステムのスループット レートが増加します
      • したがって、同時リソース管理を節約するために、redis は単一のスレッドを使用して、すべての操作が確実にシリアル化されるようにします

Redis がシングルスレッドを使用するのはなぜですか?なぜそんなに速いのでしょうか?3. シングルスレッド なぜ redis は速いのですか?

Redis がシングルスレッドを使用するのはなぜですか?なぜそんなに速いのでしょうか?

redis のほとんどの操作はメモリ内の効率的なデータ構造です

redis は多重化メカニズムを採用していますネットワーク内の多数のクライアント要求を処理し、高いスループット レートを実現するため

  • #4.socket
##ソケット通信プロセス (ネットワーク IO 処理キーと値のペアの読み取りおよび書き込みネットワーク IO 処理)

SimpleKV Get リクエストを処理するには

    クライアント リクエストをリッスンする必要があります (バインド/リッスン)
  • クライアントとの接続を確立する (code) (accept)

      ソケットからリクエストを読み取る (recv)
    • クライアントから送信されたリクエストを解析する (parse)
    • リクエストの種類に従ってキー値データを読み取ります (get)
    • 最後に結果をクライアントに返します。つまり、データをソケットに書き戻します (send)
    • 潜在的なブロックポイント
    accept () 接続が正常に確立できない場合、常にブロックされます\
  • recv() クライアントからデータを読み取るとき、常にブロックされます\
    ##非ソケットのブロッキング モード
  • #により、Redis スレッドは基本 IO モデルのようにブロッキング ポイントで待機したり、実際に到着する接続リクエストやデータを Redis が処理できなくなることはありません

Linux の IO 多重化メカニズムRedis がシングルスレッドを使用するのはなぜですか?なぜそんなに速いのでしょうか?

  • 5 .Multiplexing

Redis がシングルスレッドを使用するのはなぜですか?なぜそんなに速いのでしょうか?IO 多重化メカニズムLinux では、複数の IO ストリームを処理する 1 つのスレッドを指します。select/poll

単一のスレッドには、同時にリッスンする複数のソケットと接続されたソケットが存在します

  • 特定の実装

  • #FD は複数のソケットです

  • #Redis は epoll メカニズムを使用して、カーネルがソケットをリッスンできるようにします
  • #Redis は複数のクライアントのリクエストに接続して処理できるため、同時実行性が向上します。
    • ##select/epoll は、対応する処理を呼び出すイベントベースのコールバック メカニズムを提供します。さまざまなイベントに対応する関数

    • まず、イベントをイベント キューに入れます。CPU リソースの無駄を避けるために、リクエストが実際に発生したかどうかを確認せずにイベント キューに入れます。

      対応するイベントに従って応答操作を実行します。イベント
      • 6. 概要
    redis は本当にシングルスレッドですか
#ネットワーク上の IO およびデータの読み取りおよび書き込み操作にはスレッドが使用されます。

Redis がシングルスレッドを使用するのはなぜですか?なぜそんなに速いのでしょうか?

シングル スレッドを使用する理由

    マルチスレッド開発における同時実行制御の問題を回避するため。
  • 多重化 IO モデルは密接に関連しています。

    シングルスレッドがなぜ速いのか
  • プログラミング関連の知識の詳細については、次のサイトをご覧ください:
      プログラミング ビデオ
    • ! !

以上がRedis がシングルスレッドを使用するのはなぜですか?なぜそんなに速いのでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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