在java中使用cacheManager清除缓存

mim*_*imo 4 java ehcache

我想使用JAVA代码清除缓存.

为了这个目标,我写了这段代码:

public void clearCache(){
        CacheManager.getInstance().clearAll();
    }
Run Code Online (Sandbox Code Playgroud)

这段代码是否正确?有没有办法确认它运作良好?谢谢

Kay*_*ayz 5

是的,您的代码会清除您在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);
Run Code Online (Sandbox Code Playgroud)

要向缓存添加值,您必须创建一个Element: Element element = new Element(key, value)并且只需调用cache.put(element).如果你的缓存变量不再可见,但你的cacheManager是,你也可以这样做cacheManager.getCache(cacheName).put(element)

我希望这有帮助...


Gaʀ*_*ʀʀʏ 5

如果您知道缓存名称,则可以从CacheManager检索它并使用removeAll()

CacheManager manager = CacheManager.getInstance();
Ehcache cache = manager.getCache(cacheName);
cache.removeAll();
Run Code Online (Sandbox Code Playgroud)

您的方法有效,但它会清除所有缓存的对象。