Java JCS的示例

Java JCS的示例,java,caching,offline-caching,jcs,Java,Caching,Offline Caching,Jcs,我第一次实现JCS 我的要求: 我有一个java类,其中有一个main方法,我在缓存中存储了一些数据 我有第二个java类,它有一个main方法,我从中检索使用第一个java类存储的磁盘缓存 请注意: 1.我想使用(JCS的)磁盘缓存。 2.我想从不同的JVM检索数据。 3.当我运行第一个Java类main方法时,我应该将数据存储在磁盘缓存中,当我运行第二个Java类main方法时,我希望使用第一个Java类main方法从存储在磁盘中的缓存中检索数据 第1类:主方法 public static

我第一次实现JCS

我的要求: 我有一个java类,其中有一个main方法,我在缓存中存储了一些数据

我有第二个java类,它有一个main方法,我从中检索使用第一个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();
    }
}
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

我做了两个更改,实现了上述示例代码的预期结果

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

我所做的

  • 在默认缓存区域下向cache.ccf添加额外的行-

    jcs.default.cacheattributes.DiskUsagePatternName=UPDATE
    
  • 在类1:main方法末尾添加睡眠

  • 解释

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

  • 我做了两个更改,实现了上述示例代码的预期结果

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

    我所做的

  • 在默认缓存区域下向cache.ccf添加额外的行-

    jcs.default.cacheattributes.DiskUsagePatternName=UPDATE
    
  • 在类1:main方法末尾添加睡眠

  • 解释

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

  • 好的,你能把你写的代码和你的问题放在哪里吗?还有任何错误/警告。哇!我根本看不懂,你能用缩进把它贴在原始问题上吗?这里太乱了,挖不透。很好的布局,对问题、输出和错误的完整描述将为您提供很好的答案。AbigMessOfcodehat全部运行在一起,非常难阅读!!评论没有像问题/答案那样的格式。@ross:我已经编辑了问题本身,现在我希望你能理解我的问题。……请看这个问题好的,你能发布你写的代码和你的问题所在吗?还有任何错误/警告。哇!我根本看不懂,你能用缩进把它贴在原始问题上吗?这里太乱了,挖不透。很好的布局,对问题、输出和错误的完整描述将为您提供很好的答案。AbigMessOfcodehat全部运行在一起,非常难阅读!!评论没有像问题/答案那样的格式。@ross:我已经编辑了问题本身,现在我希望你理解我的问题。,…请看这个问题,请看问题,请看问题