web-dev-qa-db-ja.com

ehcacheのhello worldの例?

ehcacheは非常に構成可能な獣であり、例はかなり複雑で、多くの場合、インターフェースの多くの層が関係しています。

単一の数値のようなものをメモリにキャッシュする最も簡単な例に遭遇した人はいますか(XMLではなく、Javaの可能な限り少ない行)。数値は、たとえばキャッシュされます。 60秒後、次の読み取り要求により、新しい値が取得されます(例:Random.nextInt()を呼び出すなど)。

シングルトンと少しの同期を使用して、このようなものに対して独自のキャッシュを書き込む方が速く/簡単ですか?

春はありません。

35
wingnut

EhCacheには、妥当な有効期限(120秒)を持つフェイルセーフ構成が付属しています。これは、起動して実行するのに十分です。

輸入:

import net.sf.ehcache.CacheManager;
import net.sf.ehcache.Element;

次に、キャッシュの作成は非常に簡単です。

CacheManager.getInstance().addCache("test");

これにより、testというキャッシュが作成されます。すべて同じCacheManagerで管理された、多くの異なる個別のキャッシュを持つことができます。このキャッシュに(key, value)ペアを追加するのは、次のように簡単です。

CacheManager.getInstance().getCache("test").put(new Element(key, value));

指定されたキーの値の取得は、次のように簡単です。

Element elt = CacheManager.getInstance().getCache("test").get(key);
return (elt == null ? null : elt.getObjectValue());

デフォルトの120秒の有効期限後にエレメントにアクセスしようとすると、キャッシュはnullを返します(そのため、eltがnullかどうかを確認するためのチェック)。独自のehcache.xmlファイルを作成することにより、有効期限を調整できます。そのためのドキュメントは、ehcacheサイトに適切です。

38
jbrookover

Jbrookoverの答えの実用的な実装:

import net.sf.ehcache.CacheManager;
import net.sf.ehcache.Element;
import net.sf.ehcache.Cache;

public class EHCacheDemo  {
    public static final void main(String[] igno_red)  {
        CacheManager cchm = CacheManager.getInstance();

        //Create a cache
        cchm.addCache("test");

        //Add key-value pairs
        Cache cch = cchm.getCache("test");
        cch.put(new Element("tarzan", "Jane"));
        cch.put(new Element("Kermit", "Piggy"));

        //Retrieve a value for a given key
        Element elt = cch.get("tarzan");
        String sPartner = (elt == null ? null : elt.getObjectValue().toString());

        System.out.println(sPartner);  //Outputs "Jane"

        //Required or the application will hang
        cchm.removeAllCaches();  //alternatively: cchm.shutdown();
    }
}
13
aliteralmind