用于分配缓存的代码段:
private static Cache cache = CacheManager.getInstance().getCache(CACHE_NAME);
public static HashMap<String, XXX> getxxCodes(int version) {
HashMap<String, XXX> xxCodes = new HashMap<String, XXX>();
try{
Object[] cacheResult = cache.get(Constants.I_XX_CODES_FOR_XXX);
if (Boolean.FALSE.equals(cacheResult[1])) {
cache.put(Constants.I_XX_CODES_FOR_XXX, id.loadXXHashMap(version));
cacheResult = cache.get(Constants.I_XX_CODES_FOR_XXX);
}
if(cacheResult[0]!=null){
xxCodes = (HashMap<String, XXX>)cacheResult[0];
}
}catch(Exception e){
logger.error("Exception occured while loading Data from I10_DRG_XX",e);
}
return xxCodes;
}
现在在某些时候我需要将其他一些“版本”加载到缓存中。这里的版本可以是1,2,3等。因此缓存首先保存版本1数据(哈希映射)。现在当我传递2在缓存中不可用时,它需要再次将特定数据加载到缓存中,但在此之前最好清除版本1数据。我们是否有像flush这样的命令来清除特定数据?
我希望我对自己的问题很清楚。谢谢你的帮助。
答案 0 :(得分:0)
这将从缓存中删除对象(假设:Weblogic缓存)..它将生存时间设置为“0”
Cache cache = getCache();
cache.remove(cacheKey);
getCache()
可以按如下方式实施......
public Cache getCache(){
Cache cache = CacheFactory.getCache(cacheKey);
long ttl=0;
cache.setTtl(ttl);
return cache;
}
答案 1 :(得分:0)
我使用了以下代码并且其工作正常,
public void flushCache()
{
cache.flush(cacheKeyName)
}
这将从内存中删除缓存实例。 谢谢你的帮助。