ehcache入门使用

下载ehcache,目前最新版本:ehcache-2.5.1-distribution.tar.gz
提取lib目录下的2个jar包ehcache-core-2.5.1.jar 和 slf4j-api-1.6.1.jar到项目的WEB-INF/lib目录里。
然后再lasspath目录下创建ehcache.xml。配置了一个名为ColorCache的缓存,内容如下:
<?xml version="1.0" encoding="UTF-8"?>
<ehcache name="ColorCache">
  <cache name="colors"
         maxElementsInMemory="100"
         maxElementsOnDisk="0"
         eternal="false"
         timeToIdleSeconds="120"
         timeToLiveSeconds="0"
         memoryStoreEvictionPolicy="LFU">
  </cache>
</ehcache>
然后就可以在项目里使用这个缓存了。


缓存的使用实例如下:ColorCache.java与ColorDatabase.java
package org.terracotta;

import net.sf.ehcache.CacheManager;
import net.sf.ehcache.Ehcache;
import net.sf.ehcache.Element;

import java.awt.Color;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

public class ColorCache {
  private static final CacheManager  cacheManager  = new CacheManager();
  private static final ColorDatabase colorDatabase = new ColorDatabase();

  public ColorCache() {
    /**/
  }

  public Color getColor(String name) {
    Element elem = getCache().get(name);
    if (elem == null) {
      Color color = colorDatabase.getColor(name);
      if (color == null) { return null; }
      getCache().put(elem = new Element(name, color));
    }
    return (Color) elem.getValue();
  }

  private Color getCachedColor(String name) {
    Element elem = getCache().get(name);
    return elem != null ? (Color) elem.getValue() : null;
  }

  public String[] getColorNames() {
    @SuppressWarnings("unchecked")
    Iterator<String> keys = ((List<String>) getCache().getKeys()).iterator();
    List<String> list = new ArrayList<String>();
    while (keys.hasNext()) {
      String name = keys.next();
      if (getCachedColor(name) != null) {
        list.add(name);
      }
    }
    return list.toArray(new String[list.size()]);
  }

  public long getTTL() {
    return getCache().getCacheConfiguration().getTimeToLiveSeconds();
  }

  public long getTTI() {
    return getCache().getCacheConfiguration().getTimeToIdleSeconds();
  }

  public int getSize() {
    return getCache().getSize();
  }

  private Ehcache getCache() {
    return cacheManager.getEhcache("colors");
  }
}

文件:ColorDatabase.java
package org.terracotta;

import java.awt.Color;
import java.util.Map;
import java.util.HashMap;

public class ColorDatabase {
  private static final Map<String, Color> colorMap = new HashMap<String, Color>();

  static {
    colorMap.put("red", Color.red);
    colorMap.put("blue", Color.blue);
    colorMap.put("green", Color.green);
    colorMap.put("white", Color.white);
    colorMap.put("black", Color.black);
    colorMap.put("lightGray", Color.lightGray);
    colorMap.put("gray", Color.gray);
    colorMap.put("darkGray", Color.darkGray);
    colorMap.put("pink", Color.pink);
    colorMap.put("orange", Color.orange);
    colorMap.put("yellow", Color.yellow);
    colorMap.put("magenta", Color.magenta);
    colorMap.put("cyan", Color.cyan);
  }

  public ColorDatabase() {
    /**/
  }
  public Color getColor(String name) {
    Color color = colorMap.get(name);
    if(color == null) {
      return null;
    }
    try {
      Thread.sleep(3000);
    } catch(Exception e) {/**/}
    return color;
  }
}

整个项目源代码下载地址:http://download.csdn.net/detail/bits00/4046472
在项目里我把上面这个类ColorCache的所有方法发布成webservie,方便测试其中的各个方法。

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值