Redis は、キーと値のペアに基づく NoSQL データベースです。Redis の値は、文字列、ハッシュ、リスト、セット、zset、ビットマップ、HyperLogLog などのさまざまなデータ構造とアルゴリズムで構成できます。 Redis には、キーの有効期限、パブリッシュとサブスクライブ、トランザクション、Lua スクリプト、センチネル、クラスターなど、多くの機能があります。
公式パフォーマンス データによると、Redis は非常に高速でコマンドを実行でき、QPS は 100,000 以上に達することがあります。そこでこの記事では、Redis がどこが速いのか、主に次の点を含めて紹介します:
1. 開発言語
現在、私たちはプログラミングに高級言語を使用しています。 、Java、Pythonなど。 C言語というと古いイメージがあるかもしれませんが、とても便利で、なんといってもUnixシステムはCで実装されているため、C言語はオペレーティングシステムに非常に近い言語です。 RedisはC言語で開発されているため、実行が高速になります。
もう 1 つ、学生は C 言語の学習に重点を置くべきです。C 言語はコンピュータのオペレーティング システムをより深く理解するのに役立ちます。高級言語を学んだ後は、下位層に注意を払う必要がなくなるなどとは考えないでください。借りた借金は必ず返済しなければなりません。ここでは、より難しい本である「Deep Understanding of Computing System」をお勧めします。
2. 純粋なメモリ アクセス
Redis はメモリを使用してすべてのデータを保存するため、通常の操作中にデータ以外の同期のためにディスクからデータを読み取る必要はありません。 IO の数は 0 です。メモリの応答時間は約 100 ナノ秒で、これは Redis の高速性の重要な基盤です。まずは CPU の速度を見てみましょう:
私のコンピュータを例にとると、その主な周波数は 3.1G で、これは 1 秒あたり 31 億命令を実行できることを意味します。 CPU の世界観の処理速度は非常に遅く、それに比べてメモリは 100 倍、ディスクは 100 万倍遅いのですが、これは速いと思いますか?
「コンピュータ システムの徹底理解」から画像を借用しましたが、これは典型的なメモリ階層を示しています。L0 層では、CPU は 1 クロック サイクルでアクセスでき、SRAM ベースのキャッシュはこれらは数 CPU クロック サイクルでアクセスでき、次に DRAM ベースのメイン メモリには数十から数百クロック サイクルでアクセスできます。
3. シングル スレッド
シングル スレッドはアルゴリズムの実装を簡素化できますが、同時実行の実装が難しいだけではありません。データ構造も複雑ですが、テストも難しく、非常に面倒です。サーバーサイド開発では、ロックとスレッド切り替えは通常パフォーマンスを低下させる原因となるため、単一スレッドを使用することでそれらによる消費を回避できます。もちろん、シングルスレッドにも欠点があり、それは Redis の悪夢でもあるブロッキングです。コマンドの実行が長すぎると、他のコマンドがブロックされます。これは Redis にとって非常に致命的であるため、Redis は高速実行シナリオ用のデータベースです。
Redis に加えて、Node.js もシングルスレッドであり、Nginx もシングルスレッドですが、どちらも高性能サーバーのモデルです。
4. ノンブロッキング マルチチャネル I/O 多重化メカニズム
その前に、When read またはwrite は、特定のファイル記述子 (ファイル記述子 FD) の読み取りまたは書き込みを行います。データが受信されない場合、データが受信されるまでスレッドは一時停止されます。
ブロッキング モデルは理解しやすいですが、複数のクライアント タスクを処理する必要がある場合には使用されません。
#I/O 多重化とは、実際には、複数の接続を同じプロセスで管理できることを意味します。マルチチャネルとはネットワーク接続を指し、多重化は同じスレッドにすぎません。ネットワークサービスにおいて、I/O多重化の役割は複数の接続イベントを一度に業務コードに通知することであり、処理方法は業務コードによって決まります。
I/O多重化モデルにおいて最も重要な関数呼び出しはI/O多重化機能であり、このメソッドは複数のファイルディスクリプタ(fd)の読み書きを同時に監視することができます。 fd が読み取り/書き込み可能である場合、このメソッドは読み取り/書き込み可能な fd の数を返します。
Redis は、I/O 多重化テクノロジの実装として epoll を使用しており、Redis 独自のイベント処理モデルは、時間を無駄にすることなく epoll の読み取り、書き込み、クローズなどのイベントを変換します。ネットワーク I/O について。複数の FD の読み取りと書き込みの監視を実現し、パフォーマンスを向上させます。
鮮やかな例を挙げてみましょう。たとえば、TCP サーバーは 20 個のクライアント ソケットを処理します。
計画: 逐次処理。ネットワーク カードのせいで最初のソケットのデータ読み取りが遅い場合、それがブロックされると、残りのソケットが台無しになります。
プラン B: ソケット リクエストごとにクローン サブプロセスを作成します。言うまでもなく、各プロセスは大量のシステム リソースを消費します。プロセスの切り替えだけでも、オペレーティング システムに十分な負担がかかります。
C スキーム (I/O 多重化モデル、epoll): ユーザーソケットに対応する fd を epoll に登録します (実際にサーバーとオペレーティングシステム間で受け渡されるのはソケットの fd ではなく、fd_set のデータ構造です) )、そして epoll どのソケットを読み取り/書き込みする必要があるかを指示するだけで、アクティブで変化するソケット fd を処理するだけで済みます。
この方法では、epoll が呼び出された場合にのみプロセス全体がブロックされ、顧客メッセージの送受信はブロックされません。
以上がRedis はなぜそれほど速いのでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

redis'sserver-sideoperations offferidions and forexuctingcomplexoperationsontheserver.1)機能を調整することで、javascript、orredis'sscriptinglanguage、infulancingscalabilityandmantenmention

redisisbothadatabaseandaserver.1)asadatabase、itusesin memorystorage forfastaccess、理想的なforreal-timeapplicationsandcaching.2)asaserver、itupportspub/submessagingandaging andluascriptingforreal-communicationandserver-sideoperation。

Redisは、高性能と柔軟性を提供するNOSQLデータベースです。 1)大規模データと高い並行性の処理に適したキー価値ペアを介してデータを保存します。 2)メモリストレージとシングルスレッドモデルは、速い読み取りと書き込みと原子性を確保します。 3)RDBおよびAOFメカニズムを使用してデータを持続し、高可用性とスケールアウトをサポートします。

Redisは、主にデータベース、キャッシュ、メッセージブローカーとして使用されるメモリデータ構造ストレージシステムです。そのコア機能には、シングルスレッドモデル、I/O多重化、持続メカニズム、複製、クラスタリング機能が含まれます。 Redisは、キャッシュ、セッションストレージ、メッセージキューのための実際のアプリケーションで一般的に使用されます。適切なデータ構造を選択し、パイプラインとトランザクションを使用し、監視とチューニングを使用することにより、パフォーマンスを大幅に改善できます。

RedisデータベースとSQLデータベースの主な違いは、Redisが高性能および柔軟性要件に適したインメモリデータベースであることです。 SQLデータベースは、複雑なクエリとデータの一貫性要件に適したリレーショナルデータベースです。具体的には、1)Redisは高速データアクセスとキャッシュサービスを提供し、キャッシュおよびリアルタイムのデータ処理に適した複数のデータ型をサポートします。 2)SQLデータベースは、テーブル構造を介してデータを管理し、複雑なクエリとトランザクション処理をサポートし、データの一貫性を必要とするeコマースや金融システムなどのシナリオに適しています。

redisactsassassadatastoreandaservice.1)asadatastore、itusesin memorystorage for fastorations、supporting variousdatastructureSlike-key-valuepairsandsortedsets.2)asaservice、iteasruascruascriptingrupting criptingforceptingpurplecomplecomplecprexoperations

他のデータベースと比較して、Redisには次の独自の利点があります。1)非常に速い速度、および読み取り操作は通常、マイクロ秒レベルにあります。 2)豊富なデータ構造と操作をサポートします。 3)キャッシュ、カウンター、公開サブスクリプションなどの柔軟な使用シナリオ。 Redisまたはその他のデータベースを選択する場合、特定のニーズとシナリオに依存します。 Redisは、高性能および低遅延のアプリケーションでうまく機能します。

Redisは、データストレージと管理において重要な役割を果たしており、複数のデータ構造と持続性メカニズムを通じて最新のアプリケーションの中核となっています。 1)Redisは、文字列、リスト、コレクション、注文されたコレクション、ハッシュテーブルなどのデータ構造をサポートし、キャッシュや複雑なビジネスロジックに適しています。 2)RDBとAOFの2つの持続方法を通じて、Redisは信頼できるストレージとデータの迅速な回復を保証します。


ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

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

SublimeText3 英語版
推奨: Win バージョン、コードプロンプトをサポート!

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

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

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

ホットトピック









