ホームページ  >  記事  >  データベース  >  Redis が mysql より速い理由

Redis が mysql より速い理由

(*-*)浩
(*-*)浩オリジナル
2019-11-22 09:37:162262ブラウズ

Redis が mysql より速い理由

MySQL データ ストレージはテーブルに保存されます。データを検索するときは、まずテーブルのグローバル スキャンを実行するか、インデックスに基づいて検索する必要があります。これにはディスク検索が含まれます。 . ディスク検索の場合 ポイント単位で検索すると早いかもしれませんが、順番に検索すると遅いです; Redisならそこまで面倒ではありません メモリ上に保存されており、メモリ内のデータの位置に従って直接取得されます。 (推奨される学習: Redis ビデオ チュートリアル )

Redis はメモリ ストレージに基づいており、MySQL はディスク ストレージに基づいています

Redis はデータを k-v 形式で保存します。時間計算量は O(1) (定数順序) ですが、MySQL エンジンの基礎となる実装は B Tree であり、時間計算量は O(logn) (対数順序) です。 Redis は MySQL よりわずかに高速になります。

Redis はシングル スレッドの多重化 IO です。シングル スレッドではスレッド切り替えのオーバーヘッドが回避され、多重化 IO では IO 待機のオーバーヘッドが回避され、マルチコア プロセッサでのプロセッサの使用効率が向上します。データはパーティション化でき、その後、各プロセッサは異なるデータを処理します。

まず、mysql はディスクに保存される永続ストレージであり、取得には一定量の IO が必要であることがわかっています。このボトルネックが原因で、現在最も使用されている memcached (mc と呼ばれる) などのキャッシュが登場しました。

まず、ユーザーは mc にアクセスし、アクセスできなかった場合は mysql にアクセスし、メモリやハードディスクと同様にデータが mc 部分にコピーされます。

Redis と mc はどちらもキャッシュ であり、どちらもメモリ内で実行されるため、データ量が多い Web アクセスのアクセス速度が大幅に向上します。ただし、mc は単純なデータ構造のみを提供します。

たとえば、文字列ストレージ; Redis は、文字列、リスト、セット、ハッシュセット、ソートセットなどの多数のデータ構造を提供しており、ユーザーにとって非常に便利です。これは実用的な機能の層をカプセル化し、同時に実装します。同じ効果を達成するには、もちろん redis を使用し、ゆっくりと mc を放棄します。

メモリとハードディスクの関係。ハードディスクはメインデータを永続的なストレージに置きますが、メモリは現在実行中のデータの一部です。CPU はディスクの代わりにメモリにアクセスするため、大幅に改善されます。もちろん、これはプログラムのローカルアクセスの原則に基づいています。

mysql を redis する理由は、メモリ ディスク関係のマッピングです。Mysql はディスク上に配置され、redis はメモリ内に配置されます。この場合、Web アプリケーションは毎回 Redis にのみアクセスします。データが見つかると、Mysql にアクセスされます。

ただし、redis mysql とメモリ ディスクの使用法は異なることが望ましいです。

Redis 関連の技術記事の詳細については、「Redis データベース チュートリアルの使用方法の概要」 列にアクセスして学習してください。

以上がRedis が mysql より速い理由の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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