web-dev-qa-db-ja.com

Java Memcached Client

最適なJava memcachedクライアント、およびその理由は?

52
Java Guy

spymemcached の作成者として、私は少し偏見がありますが、次の理由から私のものだと思います。

可能な限りブロックしないようにゼロから設計されています。

データを要求するとき、セットを発行するときなど、小さな同時キュー挿入が1つあり、結果をブロックするFutureを取得します(getなどの一般的な場合に便利なメソッドを使用)。

積極的に最適化

optimizations ページで詳細を読むことができますが、アプリケーション全体の最適化を行います。

私はまだマイクロベンチマークでかなりうまくやっていますが、他のクライアントとかなり比較するために、あなたは非現実的な使用パターンを考え出す必要があります)。

強引にテスト済み

すべてのリリースで coverage reports を使用して、非常に厳密なテストスイートを維持しています。

バグは依然として潜入しますが、通常は非常に小さなものであり、クライアントは改善を続けています。 :)

よく文書化されている

examples ページには簡単な紹介がありますが、 javadoc は非常に詳細になります。

高レベルの抽象化を提供

キャッシュへのMapインターフェースと、機能的なCAS抽象化があります。バイナリとテキストの両方が、デフォルトのインクリメントメカニズムをサポートしています(バイナリプロトコルで提供されますが、テキストではかなり扱いにくいです)。

仕様に追いつく

サーバー自体で 多くの作業 を実行するため、プロトコルの変更に対応します。

最初のバイナリプロトコルサーバーの実装(テストサーバーとmemcached自体の両方)を行いました。これは、これをサポートする最初のプロダクション対応クライアントであり、ファーストクラスです。

また、いくつかのハッシュアルゴリズムとノード分散アルゴリズムもサポートしています。これらはすべて、ビルドごとに十分にテストされています。より良いパフォーマンスが必要な場合は、ストックケタマ整合性ハッシュ、またはFNV-1(またはJavaのネイティブ文字列ハッシュ)を使用した派生を実行できます。

56
Dustin

memcached Java clientが最高のクライアントだと思います。

特徴

  • バイナリプロトコルのサポート。 memcachedサーバーに保存されているキー/値にアクセスする最速の方法。
  • UDPプロトコルのサポート。 tcpプロトコルでキーを設定し、udpプロトコルで取得できます。実際、一部の大企業はこのようにしています。
  • カスタマイズされたシリアライゼーションとデシリアライゼーションをサポートします。
  • NIOとダイレクトバッファを備えた接続プール。接続プールで使用されなくなったときに接続を動的に増やします。

性能

  • 既存の一般的なmemcached Javaクライアントのベンチマークテストについては、 パフォーマンス を参照してください。
  • 応答の受信中に逆シリアル化する
  • ソースコードの各行のパフォーマンスチューニング。
5
newroot

これらがまだ有効な数値である場合、... http://xmemcached.googlecode.com/svn/trunk/benchmark/benchmark.html

5

約1年前、memcached Javaクライアントを使用しなければならなかったとき、spymemcachedコネクターは、より多くの機能を備えた最適化されたAPIとして説明されていました。 memcachedクライアントの.

FWIWスパイクライアントは私のために完璧に働いています。

4
Steve B.

私はSpyMemcachedを使用してきましたが、SpyMemcachedが最高のものであり、多くの新しい改良が加えられていることに同意する必要があります。

2
Langali

Java用のmemcachedクライアント および spymemcached があります。どちらかといえばあまり経験がありません。

1
cletus

xmemcached を試してください。これもnioベースであり、いくつかの強力な機能があります。

1
user189635