2011-08-13 7 views
2

私はウェブアプリケーションで作業しています。私のパートナーと私はいくつかのソリューションを議論し始めていますが、いくつかの異なるソリューションについては何が期待できるかについていくつかの洞察を得たいと考えています。私たちのアプリはJavaで書かれているとGlassFish 3.1ビルドに必要なメモリキャッシュインプリメンテーションはどれくらいですか

  1. Redisの下で実行されますと
  2. hazelcast
  3. アパッチJCS
  4. 我々はまた、ApacheのSolrのを検討しているJavaの

で私たち自身の作成をwebdisまたは可能性のあるルーシンのみ(ヘーゼルキャストを使用する場合)。 solrをメモリキャッシュソリューションとしてカウントするか、solrキャッシュを上記のソリューションと比較することはできません。あなたの勧告

答えて

4

を事前に

おかげでオプション4は間違いなく少なくとも努力ではないことは言うまでもないです。

私はHazelcastで良い結果を得ています。最小限の労力で良いリターンを提供します。設定は簡単で簡単です。ライブラリ全体が「うまくいく」だけです。

私はredisまたはwebdisに慣れていません。


あなたはあなたのリストに含めていますが、本当にキャッシュで必要なものならばEhcacheを使用することを検討していませんでした。

+0

まあ、我々はhazelcastの私たち自身のバージョンをロールについて話されていない、私は、私たち自身の単純なオブジェクトストアを作成する意味しました。私は、フレームワークを学ぶために必要なことが終わった後、近いかもしれないと主張しますが、それが私が求めている理由です。議論にJCSを取り入れたいと思っています。それを忘れてしまった。 –

+0

私はJCSにも慣れていません。私は、HazelcastとEhcacheの両方が非常に簡単で、始めるのが簡単であることを知りました。より具体的/詳細な要件を提供できる場合は、役立ちます。 (ちょっと、これらはフレームワークよりも本当にライブラリです) –

+0

Ehcacheの '+ 1' –

0

簡単にするには、LinkedHashMapをキャッシュとして使用するよりも簡単にはなりません。

public static <K,V> Map<K,V> lruCache(final int maxSize) { 
    return new LinkedHashMap<K,V>(maxSize*4/3, 0.75f, true) { 
     @Override 
     protected boolean removeEldestEntry(Map.Entry<K,V> eldest) { 
      return size() > maxSize; 
     } 
    }; 
} 

主な欠点は非常に簡単です。

あなたはそれは、スレッドセーフであるCollections.synchronizedMapを(使用する場合)

+0

ありがとう。私たちは分散キャッシュを探しているので、マップやリストを使うのは私たちのニーズにとっては単純すぎます。 –

+0

少数の開発者がいるように見えるときに、なぜ分散システムが必要なのですか?多くのGBのデータを1つのインスタンスに格納できます。 –

+1

HashMapを使用すると、メモリがガベージコレクションされなくなります。あなたはWeakHashMapを使うことができますが、実際にはキャッシュのための良い考えではありません。 Javaの実装を提案する場合は、Guavaにあるキャッシュに移動してください。 –

関連する問題