我正在尝试使用 JCS 1.3 创建一个永久磁盘缓存。我希望缓存能够关闭,然后在我下次使用它时从磁盘重新加载。我有很多数据要从需要很长时间才能运行的数据库中填充,如果缓存只是从磁盘重新加载,它会快得多。我已经尝试通读 JCS 文档并使用他们的配置示例开始工作,但到目前为止还没有成功。这是我正在使用的配置
##############################################################
##### Default Region Configuration
jcs.default=DC
jcs.default.cacheattributes=org.apache.jcs.engine.CompositeCacheAttributes
jcs.default.cacheattributes.MaxObjects=100
jcs.default.cacheattributes.MemoryCacheName=org.apache.jcs.engine.memory.lru.LRUMemoryCache
jcs.default.cacheattributes.DiskUsagePatternName=UPDATE
##############################################################
##### CACHE REGIONS
jcs.region.myRegion1=DC
jcs.region.myRegion1.cacheattributes=org.apache.jcs.engine.CompositeCacheAttributes
jcs.region.myRegion1.cacheattributes.MaxObjects=1000
jcs.region.myRegion1.cacheattributes.DiskUsagePatternName=UPDATE
jcs.region.myRegion1.cacheattributes.MemoryCacheName=org.apache.jcs.engine.memory.lru.LRUMemoryCache
jcs.region.myRegion1.elementattributes.IsEternal=true
##############################################################
##### AUXILIARY CACHES
# Indexed Disk Cache
jcs.auxiliary.DC=org.apache.jcs.auxiliary.disk.indexed.IndexedDiskCacheFactory
jcs.auxiliary.DC.attributes=org.apache.jcs.auxiliary.disk.indexed.IndexedDiskCacheAttributes
jcs.auxiliary.DC.attributes.DiskPath=f:/eh cache
jcs.auxiliary.DC.attributes.MaxPurgatorySize=10000
jcs.auxiliary.DC.attributes.MaxKeySize=10000
jcs.auxiliary.DC.attributes.OptimizeAtRemoveCount=300000
jcs.auxiliary.DC.attributes.OptimizeOnShutdown=true
jcs.auxiliary.DC.attributes.MaxRecycleBinSize=7500
这是我正在运行的一个非常简单的测试,以确保我的配置正确。
JCS 缓存 = JCS.getInstance("myRegion1"); cache.put("key", "我的价值");
System.out.println("Value In Cache After Put [" + cache.get("key") + "]");
Thread.sleep(5000);
CompositeCacheManager.getInstance().shutDown();
cache = JCS.getInstance("myRegion1");
System.out.println("Value In Cache After Reload [" + cache.get("key") + "]");
这是我在输出中得到的:
Value In Cache After Put [my value]
Value In Cache After Reload [null]
有人能指出我正确的方向吗?不确定这是否是我的配置中的问题,或者需要在代码中执行某些操作以告诉它从磁盘刷新。