Redis はすべてのデータをメモリに配置します。データ以外の同期が正常に機能する場合、ディスクからデータを読み取る必要はなく、IO 回は 0 回です。メモリの応答時間は約 100 ナノ秒で、これは Redis の高速性の重要な基盤です。
Mysql はディスクに保存される永続ストレージです。取得には一定量の IO が必要です。このボトルネックを解決するために、memcached などのキャッシュが登場しました。現在最もよく使われています(mcと呼ばれます)。
まず、ユーザーは mc にアクセスします。アクセスできなかった場合は、mysql にアクセスします。その後、メモリやハードディスクと同様に、データが Redis にコピーされますmc の一部。mc と mc は両方ともメモリ上でキャッシュされて実行されるため、データ量の多い Web アクセスのアクセス速度が大幅に向上します。 (推奨される学習: Redis ビデオ チュートリアル )
ただし、mc は文字列ストレージなどの単純なデータ構造のみを提供します。redis は、次のような多数のデータ構造を提供します。文字列、リスト、セット、ハッシュセット、ソートセットなどとして使用すると、ユーザーにとってより便利になります。結局のところ、それらは実用的な関数の層をカプセル化し、同じ効果を達成します。もちろん、redis を使用し、ゆっくりと mc を放棄してください。
Redis はシングルスレッドです。アルゴリズムの実装を簡素化するため、同時データ構造の実装は難しいだけでなく、テストも面倒です。第 2 に、シングル スレッドは、スレッドの切り替えとロックのロックと解放による消費を回避します。サーバー側の開発では、ロックとスレッドの切り替えは通常、パフォーマンスを低下させます。もちろん、シングルスレッドにも欠点があり、それは Redis の悪夢でもあるブロッキングです。コマンドの実行が長すぎると、他のコマンドがブロックされます。これは Redis にとって非常に致命的であるため、Redis は高速実行シナリオ用のデータベースです。
Redis は、I/O 多重化テクノロジの実装として epoll を使用しており、Redis 独自のイベント処理モデルは、epoll の読み取り、書き込み、クローズなどをネットワーク I/O ではなくイベントに変換します。時間の無駄が多すぎます。複数の FD の読み取りと書き込みの監視を実現し、パフォーマンスを向上させます。
Mysql はデータをハードディスクに永続的に保存するために使用されます。強力ですが遅いです。
Redis は頻繁に使用されるデータをキャッシュに保存するために使用され、読み取り速度が速いです。
Redis 関連の技術記事の詳細については、「Redis データベースの使用に関する入門チュートリアル」 列にアクセスして学習してください。
以上がRedis が mysql より速い理由の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。