2012-03-12 67 views
0

代碼清除緩存對象(內存)代碼段用於分配緩存:如何通過Java

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這樣的命令來清除特定的數據嗎?

我希望我清楚我的問題。感謝您的幫助。

+1

緩存和CacheManager來自哪些包? (我不知道標準Java庫中存在這些類。) – 2012-03-12 06:58:23

回答

0

我用下面的代碼和它的正常工作,

public void flushCache() 
    { 
     cache.flush(cacheKeyName) 
    } 

這將從內存中刪除緩存實例。 感謝您的幫助。

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; 
}