2011-05-23 14 views

答えて

28

leveldbとRedisの違いについては、私が指摘しているように、私は列の基準に少し違うと感じます。

同時実行性が必要ですか?私はレディスに行くだろう。私はRedisが既にそれを扱うコードを書いているので、これを言う。いつでも、よく書かれた他の人のコードを使って並行処理を処理することができます。私は単にマルチスレッドのアプリケーションを意味するのではなく、複数のプロセスの概念を同じシステムに含めるかどうかを含めます。それでも、マルチスレッドアプリケーションでロックを記述してデバッグする必要がないということは、私の目には大きな利点があります。

アプリ内に完全に自己完結しますか?ライブラリであるので、leveldbで移動してください。 k/v以上のものが必要なの?レディスと一緒に行く。

私はlevelkやRedisの面のみにコメントしています。私はRiakやTTの方が自分のより良い服装についてコメントしているとは思っていません。

要するに、単一スレッドのアプリケーションで永続的なキー値ストアが必要な場合、leveldbはリストから選択するオプションです(別のものは東京のキャビネットまたは良いole BerkleyDBまたはsqliteです)。しかし、それ以上のことを望むなら、他の一つを選んでください。

[編集:更新された説明wrt。私が唯一の理由は、私はこの(重要)の区別がなされ表示されていない以前の回答の両方でこれを追加し

+3

あなたの分析に同意するかどうかわかりません。 [Hacker Newsスレッド](http://news.ycombinator.com/item?id=2526032)を参照してください。私は客観的研究をまだ探していますが、並行性とスピードレベルdbの両方が優れているようです。 – rafidude

+1

私はそれが*なぜ*あなたが並行処理をしているのか、どのように必要なのかによって決まると思います。私は、Redisが並行性の方が速いと主張していませんでしたが、徹底的に言えば、私はそれを修正します。しかし、「並行処理を処理するコードを書く必要はありません」という観点から、私はそれを大きな要因と考えています。 –

+0

うわー、説明無しでダウン投票? –

11

違い:

  • RedisのLeveldbは「高速永続的なキーと値のストアを実装したライブラリ」である一方で、サーバーです。そのため、Redisでは、サーバーをポーリングする必要があります。 Leveldbではデータベースがディスクに保存されるため、メモリに保存されるRedisよりも処理速度が大幅に遅くなります。
  • Leveldbはキー/ストアのみを提供しています。 Redisのは、同様にこれを持っていますが、さらに多くの機能を持っており、

類似の特徴:上で1つを選択することが

  • 彼らの両方を持っているキー/ストア方法

理由別の

C/C++アプリケーションを作成している場合は、leveldbが提供されていますmysqlと同じくらい重いリソースではないデータベースが必要です。 Leveldbはコードレベルのアクセスを提供し、Redisではサーバーと通信するためのインタフェースが必要です。他のアプリでは、レディスは道のりです。複数のアプリケーションがアクセスできる実際のサーバーを取得するだけでなく、ディスクへの書き込み、セット、リスト、ハッシュなどの他の機能も利用できます。

+2

> *メモリに保存されているRedis *読者に注意してください。これはやや誤解を招くものです。これはディスク*と*メモリに保持されます。 redisに格納されたデータは、memcachedとは異なり、volatileではありません。 –

+0

@CrescentFreshしかし、メモリ部分を赤い部分から削除することは不可能ですか?永続性の中に複数のGBのデータを格納することを検討していて、それをカバーするRAMを持たない場合は、赤字は使用できるものではありません。 – superhero

+0

@エリック:それをカバーするラムが必要なだけでなく、バ​​ックグラウンドセーブのために余分に必要です。あなたの質問とこのコメントは[faq](http://redis.io/topics/faq)で完全に説明されています。 –

36

同時実行] ...

  • Redisのは:データベースサーバです。カスタムバイナリプロトコル(通常はクライアントライブラリ経由)を使用して通信します。
  • LevelDB:Key-Valueストアを実装するライブラリです。あなたはC++ API directlyに電話することによってそれと通信します。あなたはSQLiteのとどのように人気のある、それは、クライアント・アプリケーション用の組み込みDB(私はAndroidとiOSの船、それを両方を信じて)、その後LevelDBのようなものが中に収まる場所を参照してください。

    想像ようになってきているに精通している場合

あなたは複雑なPIMアプリケーションを書いていました。おそらくオフィスの個々のコンピュータにインストールされることを意図したエンタープライズアドレスブックマネージャーでした。あなたはあなたがあなたのアプリの中で自分自身で書いた/解析したXMLやJSONにそのデータをすべて保存することは望まないでしょう。もしそうならば、アクセスパターンを簡単にするためにDBに格納する方がいいでしょう。

しかし、Redisのローカルコピーを発送してインストールする必要もなく、ランダムポートに接続して接続することができます。直接、ネイティブから呼び出すことのできるDBが必要ですあなたのアプリケーションと "ワイヤー"通信を心配する必要はありません...あなたはクライアントの唯一のアプリでは必要のないネットワークeyのもののないDBの生の勇気が欲しい。

これは、LevelDBが座っている場所です。

これは、別の仕事のための異なるツールです。

+2

RedisはUnixドメインソケットで実行できます。私は、起動を高速化するために組み込み機器でこれをやっています(Redisを起動するためのネットワーキングは必要ありません)。 – tjameson

+0

Redis vs MonetDBまたはVoltDBまたはRocksDBのいずれかのベンチマークですか? – skan

関連する問題