ホームページ >データベース >Redis >Redis ノートの記録の概要

Redis ノートの記録の概要

Golang菜鸟
Golang菜鸟転載
2023-08-08 16:24:051305ブラウズ

redis の概要

Redis は、データベース、キャッシュ、およびメッセージキューブローカー。 #文字列ハッシュテーブル#をサポートします。 ##ListSetOrdered Set bitmaphyperloglogs およびその他のデータ型。組み込みレプリケーション、Lua スクリプト、LRU エビクション、トランザクション などディスクのレベル 永続化機能は、Redis Sentinel による高可用性と、Redis Cluster による自動 パーティショニング # も提供します。

Redis の速度

Redis はメモリに基づいており、単一プロセスを使用します

シングルスレッド モデルの KV データベース は C 言語で書かれています 、提供される公式データは 100,000 QPS (1 秒あたりのクエリ数) に達することがあります。

Redis ノートの記録の概要

#横軸は接続数、縦軸は QPS です。

公式データを確認したところ、非常に速いことがわかりました。夢を持つプログラマーとして、なぜこれがそんなに速いのかを知る必要があります。それは間違いです。

次に、Web ページ上のいくつかの情報を確認しました。一般的な状況は次のとおりです。

  • 完全に基づいています一部のリクエストは純粋にメモリ操作であり、非常に高速です。データは HashMap と同様にメモリに保存されます。HashMap の利点は、検索と操作の時間計算量が O(1) であることです。

  • データ構造がシンプルであり、データ操作もシンプルです。Redis のデータ構造は特別に設計されており、

  • # は不要なコンテキストの切り替えを避けるためにシングル スレッドを採用しており、マルチプロセスやマルチスレッドによる切り替えによるCPU消費がなく、各種ロック問題を考慮する必要がない ロック操作やロック解除操作がなく、パフォーマンスの消費がないデッドロックの可能性による;

  • マルチチャネル I/O 多重化モデル、ノンブロッキング IO を使用します;

  • 基になるモデルを別の方法で使用する。基になる実装方法とクライアントと通信するためのアプリケーション プロトコルが異なる。一般的なシステムがシステム関数を呼び出すと一定量の無駄が発生するため、Redis は独自の VM メカニズムを直接構築する移動と要求にかかる時間;

マルチチャネル I/O 多重化モデルは、select、poll、および epoll を使用して、複数の I/O イベントを監視します。アイドル状態の場合、現在のスレッドはブロックされ、1 つ以上のストリームに I/O イベントがあると、ブロック状態から復帰するため、プログラムはすべてのストリームをポーリングします (epoll は、実際に発行したストリームのみをポーリングします)イベント)、準備ができたストリームのみが順次処理されるため、多数の無駄な操作が回避されます。

要約すると、実際には 3 つのポイントがあります:

  1. epoll ネットワーク モデルを使用し、単一のスレッドを使用してリクエストを処理します。

  2. #ニーズを満たすさまざまな高性能データ構造を使用します。

  3. #redis はメモリ操作を使用し、C 言語で書かれています。

出発点

この一連の記事は、epoll ネットワーク モデルの説明に焦点を当てているわけではなく、主にRedis データ構造の原則を学習するプロセス。 Redis のデータ処理が非常に高速である理由を教えてください。

  1. #redis の文字列実装原則

  2. redis のリスト実装原則

  3. #Redis のセットの実装原則

    ##Redis のソート セットの実装原則
  4. Redis ハッシュの実装原則

  5. ##他のデータ型の紹介

以上がRedis ノートの記録の概要の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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