189

私はここ数週間、memcached をかなり使用しており、Redis について知りました。彼らの readme のこの部分を読んだとき、私は突然、胃の中に温かく居心地の良い感覚を覚えました。

Redis は memcached と同じくらい高速ですが、多くの機能を備えているため、ステロイドの memcached として使用できます。memcached と同様に、Redis はキーへのタイムアウトの設定もサポートしているため、一定の時間が経過するとこのキーは自動的に削除されます。

これはすごいですね。ベンチマークのあるこのページも見つけました:http://www.ruturaj.net/redis-memcached-tokyo-tyrant-mysql-comparison

正直なところ、memcache は、Redis と呼ばれるこの新参者と比較した場合、パフォーマンスの観点から悪い選択である古い恐竜ですか?

これまでRedisについてあまり聞いたことがなかったので、私の質問へのアプローチです!

4

6 に答える 6

208

必要なものによって異なりますが、一般的には次のように思います。

  • パフォーマンスを気にしすぎてはいけません。Redis は値が小さいとコアあたりの速度が速くなりますが、memcached は、クライアントの助けなしに、単一の実行可能ファイルと TCP ポートで複数のコアを使用できます。また、memcached は、100k オーダーの大きな値でより高速です。Redis は最近、大きな値 (不安定なブランチ) に関して大幅に改善されましたが、このユース ケースでは memcached の方が高速です。ここでのポイントは、どちらも提供できる 1 秒あたりのクエリのボトルネックになる可能性が低いということです。
  • メモリ使用量に注意する必要があります。単純なキーと値のペアの場合、memcached の方がメモリ効率が高くなります。Redis ハッシュを使用すると、Redis のメモリ効率が向上します。ユースケースによります。
  • Redis でのみ利用可能な 2 つの機能である永続性とレプリケーションに注意する必要があります。キャッシュを構築することが目標であっても、アップグレードまたは再起動後もデータが残っていると役に立ちます。
  • 必要な操作の種類に注意する必要があります。Redis には複雑な操作がたくさんあります。キャッシングのユースケースを考えただけでも、クライアント側でデータを処理する必要なく、1 回の操作でより多くの操作を実行できることがよくあります (多くの I/O が必要になる場合があります)。この操作は、多くの場合、プレーンな GET および SET と同じくらい高速です。したがって、GET/SET だけでなく、より複雑なものが必要な場合は、Redis が大いに役立ちます (タイムライン キャッシングを考えてください)。

ユースケースなしで今すぐ選ぶのは難しいですが、多くの場合、Redis は DB として使用したくない場合でも理にかなっていると思います。より多くの機能があれば、より多くの問題を解決できます。キャッシングだけでなく、メッセージング、ランキングなども含まれます。

Ps もちろん、私は Redis プロジェクトの主任開発者であるため、偏見を持っている可能性があります。

于 2011-12-13T18:40:57.143 に答える
83

正直なところ、memcache は、Redis と呼ばれるこの新参者と比較した場合、パフォーマンスの観点から悪い選択である古い恐竜ですか?

  • 機能セットを比較すると、Redisより多くの機能があります。
  • インストールの容易さを比較することRedisもはるかに簡単です。依存関係は必要ありません。
  • アクティブな開発を比較することRedisも優れています。
  • memcachedよりも少し速いと思いますRedis。ディスクにはまったく触れません。
  • 私の意見では、それRedisは よりも優れた製品ですmemcached
于 2010-05-21T20:30:19.910 に答える
74

Memcache は優れたツールであり、非常に信頼性があります。

この問題を 100 ミリ秒未満の範囲で誰がより高速であるかという観点から見るのではなく、ソフトウェアの「クラス」ごとのパフォーマンスに注目してください。

  • ローカルRAMのみを使用しますか? ->最速
  • リモートRAMを使用していますか?->速い
  • それはRAMとハードディスクを使用しますか->うーん。
  • ハードディスクのみを使用しますか -> 実行します!
于 2010-05-20T16:17:51.253 に答える
47

memcached が行うことで Redis が行わないことは、キャッシュからの最近使用されていない値の削除です。memcached を使用すると、好きなだけ値を安全に設定でき、メモリがオーバーフローすると、最近使用していない値が削除されます。Redis では、すべてにタイムアウトを設定することによって、これを概算することしかできません。メモリを解放する必要がある場合、3 つのランダムなキーを調べて、期限切れに最も近いキーを削除します。

キャッシュとしてのみ使用している場合、それが主な違いです。

于 2010-06-20T20:05:32.210 に答える
13

Membase も参照してください。

http://www.northscale.com/products/membase_server.html

私は使用していませんが、永続性を備えたメモリ中心の KV ストアであるという点で、Redis に似ているようです。私が見ることができるものとの主な違いは次のとおりです。

  • Redis には、はるかに多くのデータ操作機能 (順序付きセットなど) があります。
  • Redis には、水平方向のスケーラビリティを追加する保留中の Redis Cluster プロジェクトがあります
  • Redis には、LRU とオブジェクトのサイズの両方を考慮するハイブリッド アルゴリズムに基づく、ディスク (VM) へのデータ オフロードの単一層があります。

  • Membase は memcached ワイヤ プロトコルを使用します - 既存のアプリケーションのアップグレード パスとして役立ちます

  • Membase は、分散ハッシュテーブル アプローチを使用して水平方向にスケーリングするように設定されています
  • Membase は、LRU アプローチを使用して複数層のデータ オフロードをサポートできます (ディスクに移動するものはほとんど使用されず、SSD に移動するものはほとんどなく、頻繁に使用されるものは RAM に残ります)。
  • Membase の TTL 機能については不明です。

選択は、アプリケーションが Redis の追加のデータ操作機能をどの程度活用できるかによって異なります。

于 2010-08-26T22:46:02.707 に答える