我想使用JAVA代码清除缓存。
为了这个目标,我写了这段代码:
public void clearCache(){
CacheManager.getInstance().clearAll();
}
这段代码是否正确? 有没有办法确认它运作良好? 感谢
答案 0 :(得分:5)
是的,您的代码会清除您在cacheManager中拥有的所有缓存。
ehcache文档说: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 = new Element(key, value)
,只需致电cache.put(element)
即可。
如果您的缓存变量不再可见,但您的缓存管理器是,您可以使用cacheManager.getCache(cacheName).put(element)
我希望这会有所帮助......
答案 1 :(得分:4)
如果您知道缓存名称,则可以从CacheManager检索缓存名称并使用removeAll()。
CacheManager manager = CacheManager.getInstance();
cache = manager.getCache(cacheName);
cache.removeAll();
您的方法有效,但它会清除所有缓存'对象。
答案 2 :(得分:0)
有两种方法可以实现这一目标: