gpt4 book ai didi

java - JCS 的示例

转载 作者:太空宇宙 更新时间:2023-11-04 07:25:42 25 4
gpt4 key购买 nike

我是第一次实现 JCS。

我的要求:我有一个带有 main 方法的 java 类,在该方法中我在缓存中存储一​​些数据。

我有第二个java类,它有一个主要方法,我从磁盘缓存中检索我使用第一个java类存储的内容。

请注意:1.我想使用磁盘缓存(JCS的)。2. 我想从不同的JVM 检索数据。3.当我运行第一个Java类main方法时,我应该将数据存储在磁盘缓存中,当我运行第二个java类main方法时,我想使用第一个java类main方法从存储在磁盘中的缓存中检索数据。

类 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();
}
}

类2:主方法

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

缓存.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

最佳答案

我做了两处更改,达到了上述示例代码的预期结果。

控制台 ->“有效的缓存数据:dev”

我做了什么

  1. 在默认缓存区域下的 cache.ccf 中添加一行 -

    jcs.default.cacheattributes.DiskUsagePatternName=UPDATE
  2. 在类 1 的末尾添加 sleep :main 方法

说明

  1. DiskUsagePattern 默认为 SWAP,这意味着当元素达到 MaxMemoryIdleTimeSeconds 时将缓存元素写入磁盘,默认值似乎是 60 * 120 秒。当 DiskUsagePatternUPDATE 时,元素在添加到缓存时会写入磁盘。好吧,元素不会同步写入缓存,而是添加到队列中立即写入并返回。因此,如果有人正在寻找磁盘上的即时且可靠的更新,那么 DiskUsagePattern 应该是 UPDATE 而不是 SWAP(默认)。
  2. 上述队列中的元素立即由标记为守护进程的后台线程处理。真正的磁盘更新发生在这个后台线程中。所以我们需要给这个守护线程一点时间来执行。

关于java - JCS 的示例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18591245/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com