我是第一次实施JCS。
我的要求: 我有一个带有main方法的java类,我将一些数据存储在缓存中。
我有第二个java类,带有一个main方法,我从使用第一个java类存储的磁盘缓存中检索。
请注意: 1.我想使用磁盘缓存(Of JCS)。 2.我想从不同的JVM中检索数据。 3.当我运行第一个Java类主方法时,我应该将数据存储在磁盘缓存中,当我运行第二个java类主方法时,我想从缓存中检索数据,该缓存使用第一个存储在磁盘中java类主要方法。
第1课:主要方法..
public static void main(String[] args) {
// Initialize the JCS object and get an instance of the default cache region
try {
JCS cache = JCS.getInstance("default");
String key = "key0";
String value = "value0";
cache.put(key, value);
cache.put("vasu","dev");
} catch (CacheException e) {
e.printStackTrace();
}
}
class2:主要方法
public static void main (String asd[]){
try {
JCS cache = JCS.getInstance("default");
String cachedData = (String)cache.get("vasu");
// Check if the retrieval worked
if (cachedData != null) {
// The cachedData is valid and can be used
System.out.println("Valid cached Data: " + cachedData);
}
else
System.out.println("Invalid cached Data: ");
} catch (CacheException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
cache.ccf:
jcs.default=DISK_REGION
jcs.default.cacheattributes=org.apache.jcs.engine.CompositeCacheAttributes
jcs.default.cacheattributes.MaxObjects=1000
jcs.default.cacheattributes.MemoryCacheName=org.apache.jcs.engine.memory.lru.LRUMemoryCache
jcs.default.elementattributes.IsEternal=false
jcs.default.elementattributes.MaxLifeSeconds=3600
jcs.default.elementattributes.IdleTime=1800
jcs.default.elementattributes.IsSpool=true
jcs.default.elementattributes.IsRemote=true
jcs.default.elementattributes.IsLateral=true
jcs.region.OUR_REGION=DISK_REGION
jcs.region.OUR_REGION.cacheattributes=org.apache.jcs.engine.CompositeCacheAttributes
jcs.region.OUR_REGION.cacheattributes.MaxObjects=1000
jcs.region.OUR_REGION.cacheattributes.MemoryCacheName=org.apache.jcs.engine.memory.lru.LRUMemoryCache
jcs.region.OUR_REGION.cacheattributes.UseMemoryShrinker=true
jcs.region.OUR_REGION.cacheattributes.MaxMemoryIdleTimeSeconds=3600
jcs.region.OUR_REGION.cacheattributes.ShrinkerIntervalSeconds=60
jcs.region.OUR_REGION.cacheattributes.MaxSpoolPerRun=500
jcs.region.OUR_REGION.elementattributes=org.apache.jcs.engine.ElementAttributes
jcs.region.OUR_REGION.elementattributes.IsEternal=false
jcs.auxiliary.DISK_REGION=org.apache.jcs.auxiliary.disk.indexed.IndexedDiskCacheFactory
jcs.auxiliary.DISK_REGION.attributes=org.apache.jcs.auxiliary.disk.indexed.IndexedDiskCacheAttributes
jcs.auxiliary.DISK_REGION.attributes.DiskPath=c:/jcs/disk_region
jcs.auxiliary.DISK_REGION.attributes.MaxPurgatorySize=10000
jcs.auxiliary.DISK_REGION.attributes.MaxKeySize=10000
jcs.auxiliary.DISK_REGION.attributes.OptimizeAtRemoveCount=300000
jcs.auxiliary.DISK_REGION.attributes.MaxRecycleBinSize=7500
答案 0 :(得分:1)
我做了两处更改,实现了上述示例代码的预期结果。
console - > “有效的缓存数据:dev”
我做了什么
在默认缓存区域 -
下的cache.ccf中添加一行jcs.default.cacheattributes.DiskUsagePatternName=UPDATE
在第1课结束时添加睡眠:主要方法
解释
DiskUsagePattern
默认为SWAP,这意味着当元素的MaxMemoryIdleTimeSeconds
到达时,缓存元素将写入磁盘,默认值似乎为60 * 120秒。
当DiskUsagePattern
为UPDATE
时,元素在添加到缓存时会写入磁盘。好吧,元素不会同步写入缓存,而是添加到队列中以立即写入并返回。
因此,如果有人在磁盘上寻找即时且可靠的更新,那么DiskUsagePattern
应为UPDATE
而不是SWAP
(默认)。