首页
学习
活动
专区
圈层
工具
发布

JCS示例
EN

Stack Overflow用户
提问于 2013-09-03 11:33:49
回答 1查看 10.1K关注 0票数 1

我是第一次实施JCS。

我的要求是:我有一个java类,它有一个主方法,在缓存中存储一些数据。

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

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

第1类:主要方法。

代码语言:javascript
复制
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:主要方法

代码语言:javascript
复制
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:

代码语言:javascript
复制
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
EN

回答 1

Stack Overflow用户

发布于 2013-12-10 18:57:01

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

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

我所做的

  1. 在默认缓存区域下向cache.ccf添加一条附加行- jcs.default.cacheattributes.DiskUsagePatternName=UPDATE
  2. 在第1类末尾添加睡眠: main方法

解释

  1. DiskUsagePattern默认为交换,这意味着当元素的MaxMemoryIdleTimeSeconds达到时,缓存元素被写入磁盘,默认值似乎是60 * 120秒。当DiskUsagePatternUPDATE时,元素在被添加到缓存时被写入磁盘。好的,元素不是同步写入缓存的,而是添加到要立即写入并返回的队列中。因此,如果有人在磁盘上寻找立即可靠的更新,那么DiskUsagePattern应该是UPDATE而不是SWAP(默认)。
  2. 上面提到的队列中的元素由标记为守护进程的后台线程立即处理。真正的磁盘更新发生在这个后台线程中。因此,我们需要给这个守护进程线程一点时间来执行。
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18591245

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档