5

JAVA コードを使用してキャッシュをクリアしたい。

この目標のために、次のコードを書きます。

public void clearCache(){
        CacheManager.getInstance().clearAll();
    }

このコードは正しいですか?それがうまく機能することを確認する方法はありますか?ありがとう

4

3 に答える 3

6

はい、コードは cacheManager にあるすべてのキャッシュをクリアします。ehcache-documentation は次のように述べています。void clearAll() Clears the contents of all caches in the CacheManager, but without removing any caches

テストしたい場合は、いくつかの要素をキャッシュに追加し、呼び出しclearCache()てから値を取得してみてください。-get()メソッドは のみを返す必要がありnullます。

cacheManager に値を直接追加することはできません。構成ファイルで宣言したキャッシュを管理するだけです。(デフォルトでは ehcache.xml です。ehcache ホームページで入手できます。) 構成について何も知らなくても、プログラムでキャッシュを追加することもできます。

    CacheManager cacheManager = CacheManager.getInstance();
    Ehcache cache = new Cache(cacheManager.getConfiguration().getDefaultCacheConfiguration());
    cache.setName("cacheName");
    cacheManager.addCache(cache);

キャッシュに値を追加するには、Element: を作成し Element element = new Element(key, value)、単純に を呼び出す必要がありますcache.put(element)。キャッシュ変数が表示されなくなったが、キャッシュマネージャーが表示されている場合は、次のようにして同じことができますcacheManager.getCache(cacheName).put(element)

これが役立つことを願っています...

于 2013-09-09T12:57:33.837 に答える
5

キャッシュ名がわかっている場合は、CacheManagerから取得してremoveAll()を使用できます。

CacheManager manager = CacheManager.getInstance();
Ehcache cache = manager.getCache(cacheName);
cache.removeAll();

あなたのアプローチは機能しますが、すべてのキャッシュのオブジェクトがクリアされます。

于 2014-10-10T14:55:02.647 に答える
0

これを実現するには、次の 2 つの方法があります。

  1. dev-console の使用: Terracotta Server Array (TSA) にバンドルされている ehcache のエンタープライズ バージョンを使用している場合、インストールされたディレクトリで、そのフレーバーに基づいて dev-console.bat または dev-console.sh を見つけることができます。 OS では、このファイルを実行して TSA サーバーに接続します (インストールのデフォルトが使用されている場合は、localhost:9520 に接続できます)。リストでクリア。これにより、選択したキャッシュのキャッシュ コンテンツがクリアされ、使用可能なメモリの円グラフが表示される [サイジング] タブで確認できます。
  2. オープン ソースの ehCache を使用する: キャッシュ マネージャー API を使用して、質問で説明されているようにキャッシュをクリアし、キャッシュから取得して特定のキーが null であることを確認します。
于 2014-04-13T15:25:35.037 に答える