JCS 缓存 - 删除功能不删除特定元素
我们应用程序的 jcs 缓存配置如下,我看到当我们使用 fulshAll() 方法时,它会删除整个缓存,但是当我们使用 remove(key) 时,它不会删除该对象。有人可以建议。
public static void init( java.util.Properties properties ) {
java.util.Properties cacheProperties = new java.util.Properties();
java.util.regex.Pattern cachePattern =
java.util.regex.Pattern.compile("^jcs.*");
for (String key:properties.stringPropertyNames()) {
Matcher cacheMatcher = cachePattern.matcher(key);
if ( cacheMatcher.find() ) {
cacheProperties.setProperty(key,properties.getProperty(key));
}
}
CompositeCacheManager ccm =
CompositeCacheManager.getUnconfiguredInstance();
ccm.configure(cacheProperties);
miscCacheAdministrator = JCS.getInstance("miscCache");
metaDataCacheAdministrator = JCS.getInstance("metaDataCache");
resultCacheAdministrator = JCS.getInstance("resultCache");
}
我将一个元素放入缓存中并在此处将其删除以进行演示。
public static void ExampleCache(String key){
resultCacheAdministrator.put(key, "Temp Cache");
resultCacheAdministrator.remove(key);
logger.debug(" Flushing a Particular Cache "+key);
}
当调用 PUT 时,我看到对象以 1kb 存储,我立即使用相同的键调用 remove 以进行测试,我看到对象仍然存在并且没有从缓存中删除,我希望 1kb 为 0,请让我知道我在这里做错了什么,为什么没有从文件缓存中删除缓存对象。
属性文件
# cache settings
jcs.region.resultCache=DC
jcs.region.resultCache.cacheattributes.MaxObjects=0
jcs.region.resultCache.elementattributes.IsEternal=false
jcs.region.resultCache.elementattributes.MaxLife=14400
jcs.region.resultCache.elementattributes.IsSpool=true
jcs.region.resultCache.cacheattributes=org.apache.commons.jcs.engine.
CompositeCacheAttributes
# Disk Cache Event Queue Pool
thread_pool.disk_cache_event_queue.useBoundary=false
thread_pool.disk_cache_event_queue.maximumPoolSize=3
thread_pool.disk_cache_event_queue.minimumPoolSize=1
thread_pool.disk_cache_event_queue.keepAliveTime=3500
thread_pool.disk_cache_event_queue.startUpSize=1