用apache JCS實現物件緩衝

husthxd發表於2005-09-12

這兩天客戶抱怨在某些模組操作緩慢,透過使用JCS對物件實現快取,有效的提高了執行速度.


JCS的配置很簡單:

1.在WEB-INF/classes中加入配置檔案,cache.ccf,內容如下:

jcs.default=
jcs.default.cacheattributes=org.apache.jcs.engine.CompositeCacheAttributes
jcs.default.cacheattributes.MaxObjects=100
jcs.default.cacheattributes.MemoryCacheName=org.apache.jcs.engine.memory.lru.LRUMemoryCache
#時間過期
#過期時間為300秒,每300秒檢查一次
jcs.default.cacheattributes.cacheattributes.UseMemoryShrinker=true
jcs.default.cacheattributes.cacheattributes.MaxMemoryIdleTimeSeconds=300
jcs.default.cacheattributes.cacheattributes.ShrinkerIntervalSeconds=300

jcs.region.unitCache=
jcs.region.unitCache.cacheattributes=org.apache.jcs.engine.CompositeCacheAttributes
jcs.region.unitCache.cacheattributes.MaxObjects=100
jcs.region.unitCache.cacheattributes.MemoryCacheName=org.apache.jcs.engine.memory.lru.LRUMemoryCache
#時間過期
#過期時間為300秒,每300秒檢查一次
jcs.unitCache.cacheattributes.cacheattributes.UseMemoryShrinker=true
jcs.unitCache.cacheattributes.cacheattributes.MaxMemoryIdleTimeSeconds=300
jcs.unitCache.cacheattributes.cacheattributes.ShrinkerIntervalSeconds=300

2.在類中定義快取變數,

//物件緩衝池
private static JCS unitCache;

並在建構函式中獲取cache:

try {
unitCache = JCS.getInstance("unitCache");
} catch (Exception e) {
log.error("獲取物件快取出錯!" + e);
}

3.這樣就可以使用cache了:

if (!CommonUtility.isNull(unitCache)) {
List lstCache = (List) unitCache.get("unitList");
if (!CommonUtility.isNull(lstCache))
return lstCache;
}
log.info("不能從緩衝中獲取物件,透過業務方法獲取!");

//do something here.

//加入緩衝機制
//把列表加入快取中
if (!CommonUtility.isNull(unitCache)) {
log.info("把列表放入緩衝池中!");
unitCache.put("unitList", list);
}

.................................

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/6906/viewspace-21891/,如需轉載,請註明出處,否則將追究法律責任。

相關文章