如何通过Java清除缓存对象(内存)

时间:2012-03-12 06:51:27

标签: java caching

用于分配缓存的代码段:

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这样的命令来清除特定数据?

我希望我对自己的问题很清楚。谢谢你的帮助。

2 个答案:

答案 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)
    }

这将从内存中删除缓存实例。 谢谢你的帮助。