memcachedのとRedisの違いは何ですか?どのようなスレッドモデルのRedis?マルチスレッドの効率よりもはるかに高いのはなぜシングルスレッドのmemcachedのRedisの(Redisのはなぜシングルスレッドですが、また、高い同時実行をサポートすることができますか)?

1.redisとmemcachedの違いは何ですか?

この事は右、あなたはNの複数の違いを比較することができますが、私はまだいくつかのより多くの著者はRedisのそれを与える取ります

 

1)Redisのサポート、サーバー側のデータ操作:Redisのは、より多くのデータおよび構造と豊かなデータ操作、通常のMemcachedをサポートを所有、Memcachedのに比べて、再度同様の変更を行うために、クライアントを取得するためにデータを必要としますバックセット。これは非常にネットワークIOとデータボリュームの数を増加させます。Redisのでは、これらの操作は、通常、効率的としてGET / SET複雑で、一般的なものです。Redisのは良い選択になるので、だから、もしキャッシュは、より複雑な構造と操作をサポートすることができます。

 

2 )メモリ効率の比較:単純なキーと値の使用ストアは、次いで、Memcachedの高いメモリ使用率を、そしてRedisのがあれば、ハッシュ使用して構造をキー値行い、そのモジュラーその高いメモリ使用率の圧縮に、ストアMemcachedのに

 

3 )性能比較:Redisのがので、単一コア、及びMemcachedのは、平均して各コアRedisのように、マルチコアを使用することができるデータを記憶するには、より小さいMemcachedの高性能。100Kにおける以上のデータ、MemcachedのRedisのより性能、Redisのはあるが、より最近に大きなデータ記憶装置の性能を最適化するが、Memcachedの比較、またはわずかに小さいです。

 

4)クラスタモード:ネイティブクラスタモデルをmemcachedをしないが、クラスタ刻まれた部分に書き込みデータを達成するために、クライアントに依存している。しかし、Redisのは、現在のネイティブサポートクラスタモードで、Redisの関係者はにmemcachedをよりRedisのクラスタクラスタモードをサポートすることです良好であると言わ

 

何がスレッドモデルを2.redis?

1)文書イベントハンドラ


Redisの原子炉のモデルは、このプロセッサは、文書イベントハンドラと呼ばれ、ネットワークイベントプロセッサに基づいてファイル・イベント・ハンドラを開発しました。このファイルは、イベント・プロセッサ、シングルスレッドは、IO多重機構は同時に、複数のソケットを監視し、このイベントを処理するためにソケットのイベントに応じて、対応するイベントハンドラを選択して、シングルスレッドモデルと呼ばれるのRedis。

 

リスニングソケットは、読んで、受け入れ書き込み、実行のために準備ができている場合は、近くに他の操作は、ファイルの前に呼び出され生成される対応するファイルイベント、今回このイベントのイベントハンドラを処理するための良いイベントに関連するプロセッサで動作するとき。

 

ファイルイベントハンドラは、シングルスレッドモードが、IO多重化複数のソケットの機構を介してリスニング、高性能ネットワーク通信モデルを実現することができるであり、その内部Redisのを確実にするために、他のシングルスレッドの内部モジュールとドッキングすることができますシンプルさのスレッドモデル。

 

ソケット、IO多重化プログラム、ファイル・イベント・ディスパッチャ、イベントプロセッサの複数の(プロセッサのコマンド要求、応答コマンドプロセッサ、プロセッサ接続応答、等):コンフィギュレーションファイルイベントプロセッサは、4つの部分を含んでいます。

 

ソケットの複数のそれぞれ異なるイベント・ファイルに対応し、異なる同時動作を有することができるが、プログラムは、IO多重ソケットの複数を監視しますが、ソケットがキュー内のキューに配置され、キューがそれぞれから除去されソケットにイベントディスパッチャは、ソケットイベントディスパッチャプロセッサは、イベントに対応します。

 

イベントは、イベントディスパッチャソケットに次のキューまでソケット、IO多重化プログラムで処理された後。現在生成されたソケットに基づいて各イベントのファイルイベントディスパッチャは、対応するイベントハンドラが処理するために選択されています。

 

2)ファイルイベント

 

(クライアントはRedisの動作または閉動作を書き込む行うなど)、または新しい応答がsccketを発生する可能性がある場合(クライアントのRedisを接続する動作を行う)ソケットが読み取り可能となった場合、ソケットはAE_READABLEイベントが生成されます。

 

(クライアントはRedisの読み出し動作を行う)ソケットが書き込み可能になったとき、ソケットはAE_WRITABLEイベントを生成します。

 

ソケットAE_READABLEとAE_WRITABLE両方のイベント、ファイルイベントディスパッチャの優先順位AE_REABLEイベントを生成しながら、そのイベントがAE_WRITABLEであればIO多重化は、同じ時間AE_REABLEとAE_WRITABLE両方のイベントで聴くことができます。

 

3)ファイルのイベントハンドラ

 

クライアントはRedisのを接続している場合、その答えは、プロセッサソケット協会に接続されます

クライアントはRedisのにデータを送信したい場合、プロセッサはソケットに関連するコマンドを要求します

クライアントは、Redisのからデータを読み込む場合は、関連するコマンドプロセッサソケットを返します。

 

クライアントのRedisと通信する4)工程

 

Redisの初期化を開始すると、Redisのプロセッサは、応答がクライアントとの接続を確立するためにプロセッサによって処理され、クライアントのRedisとの接続を開始する場合、次いで、この時間はAE_READABLEイベントが生成され、AE_READABLEイベントに関連付けられた応答を接続します接続、コマンドに関連付けられたAE_READABLEイベントのソケットは、プロセッサを要求しつつ、対応するクライアントソケットを作成します。

 

クライアントはRedisのに要求を送信するとき、それは、対応するコマンドプロセッサによって要求が処理するために、ソケットにAE_READABLE最初のイベントを生成する(読み出し要求または書き込み要求のいずれかを、同じ)。このコマンドは、データ・プロセッサがソケットからの要求、その後、実行プロセスを読み込みます要求します。

そして、クライアントのデータの後に対応する準備ができて、ここでのRedis、それはクライアント側が応答データを読み込む準備ができたとき、それはソケットにAE_WRITABLEが生成されます、コマンドプロセッサに関連付けられたAE_WRITABLEイベントのソケットに返信しますイベントは、クライアントが読むこと、準備した応答データソケットに書かれているに対処するための対応するコマンドによって、プロセッサに戻ります。

 

コマンドプロセッサ書かれた返信した後、それはAE_WRITABLEイベントやコマンド応答協会プロセッサのソケットを削除します。

 

マルチスレッドの効率よりもはるかに高い3なぜシングルスレッドのmemcachedのRedisの(Redisのなぜシングルスレッドであるが、高い同時をサポートすることができますか)?

1)ピュアメモリ操作

2)コアは非ブロッキングIO多重化メカニズムに基づいています

3)マルチスレッドの問題(百度)を切り替える、頻繁なコンテキストを回避する代わりにシングルスレッド

おすすめ

転載: www.cnblogs.com/qingmuchuanqi48/p/11129840.html