2

私は、潜在的に非常に大きく変化するデータセットのメモリキャッシュを必要とするWebアプリケーションに取り組んでいます。私のパートナーと私はいくつかの解決策について議論し始めていますが、いくつかの異なる解決策に期待できることについて洞察を得たいと思っています. 私たちのアプリは Java で書かれており、glassfish 3.1 で動作します。

  1. redis と webdis
  2. へーゼルキャスト
  3. アパッチ JCS
  4. Java で独自のものを作成する

また、apache solr または可能な lucene のみを検討しています (hazelcast を使用する場合)。solr をメモリ キャッシュ ソリューションとしてカウントする必要がありますか、それとも solr キャッシュは上記のソリューションと実際には比較できません。

あなたの推薦を前もってありがとう

4

2 に答える 2

4

オプション 4 が最小の労力ではないことは明らかです。

Hazelcast で良い結果が得られました。最小限の労力で十分な見返りが得られます。構成は単純でわかりやすく、ライブラリ全体としては「問題なく動作します」。

redis や webdis に詳しくありません。


リストに含めませんでしたが、本当に必要なものがcacheである場合はEhcacheの使用を検討してください。

于 2011-08-13T22:15:25.693 に答える
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() を使用してください

于 2011-08-14T06:55:35.943 に答える