转https://blog.csdn.net/u012255097/article/details/54576720
java缓存有很多,ehcache是比较流行的java缓存框架,它以简单,快速等特点受到广大开发人员的喜爱,下面是我参考了一些资料后整理的关于ehcache的简单实例,包括通过配置文件和java动态添加缓存,以下是详细代码:
一、通过使用API来动态的添加缓存(将缓存的配置信息通过java代码来实现而非写在配置文件)
- package ehcache;
- import net.sf.ehcache.Cache;
- import net.sf.ehcache.CacheManager;
- import net.sf.ehcache.Element;
- /**
- * 使用API来动态的添加缓存(将缓存的配置信息通过java代码来实现而非写在配置文件)
- * @author Administrator
- *
- */
- public class EhCache1 {
- public static void main(String[] args) {
- //创建一个缓存管理器
- CacheManager singletonManager = CacheManager.create();
- //建立一个缓存实例
- Cache memoryOnlyCache = new Cache("testCache", 5000, false, false, 5, 2);
- //在内存管理器中添加缓存实例
- singletonManager.addCache(memoryOnlyCache);
- //在缓存管理器中获取一个缓存实例
- Cache cache = singletonManager.getCache("testCache");
- //使用获取到的缓存实例
- Element element = new Element("key1", "value1");
- cache.put(element);//添加缓存值
- cache.put(new Element("key2", "value2"));//添加缓存值
- int elementsInMemory = cache.getSize();//获取缓存个数
- System.out.println("缓存个数======="+elementsInMemory);
- // Object obj = element.getObjectValue();//获取对象值
- // cache.remove("key1");//删除缓存
- Cache cache2 = singletonManager.getCache("testCache");//获取缓存实例
- Element element2 = cache2.get("key1");
- System.out.println("value====="+element2.getValue());//获取缓存值
- // singletonManager.shutdown();
- }
- }
二、通过配置文件ehcache.xml创建缓存实例
1.ehcache.xml
- <?xml version="1.0" encoding="UTF-8"?>
- <ehcache xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:noNamespaceSchemaLocation="http://ehcache.org/ehcache.xsd">
- <!-- 磁盘缓存位置 -->
- <diskStore path="java.io.tmpdir/ehcache"/>
- <!-- 默认缓存 -->
- <defaultCache
- maxEntriesLocalHeap="10000"
- eternal="false"
- timeToIdleSeconds="120"
- timeToLiveSeconds="120"
- maxEntriesLocalDisk="10000000"
- diskExpiryThreadIntervalSeconds="120"
- memoryStoreEvictionPolicy="LRU"/>
- <!-- helloworld1缓存 -->
- <cache name="helloworld1"
- maxElementsInMemory="1000"
- eternal="false"
- timeToIdleSeconds="5"
- timeToLiveSeconds="5"
- overflowToDisk="false"
- memoryStoreEvictionPolicy="LRU"/>
- <!-- helloworld2缓存 -->
- <cache name="helloworld2"
- maxElementsInMemory="1000"
- eternal="false"
- timeToIdleSeconds="5"
- timeToLiveSeconds="5"
- overflowToDisk="false"
- memoryStoreEvictionPolicy="LRU"/>
- </ehcache>
- package ehcache;
- import net.sf.ehcache.Cache;
- import net.sf.ehcache.CacheManager;
- import net.sf.ehcache.Element;
- /**
- * 通过配置文件(ehcache.xml)来使用缓存
- * @author Administrator
- */
- public class EhCache2 {
- public static void main(String[] args) {
- //创建缓存管理器
- final CacheManager cacheManager = new CacheManager();
- // 创建一个缓存实例(在配置文件中获取一个缓存实例)
- final Cache cache = cacheManager.getCache("helloworld1");
- final String key = "greeting";
- //他建一个数据容器
- final Element putGreeting = new Element(key, "Hello, World!");
- //将数据放入到缓存实例中
- cache.put(putGreeting);
- //取值
- final Cache cache2 = cacheManager.getCache("helloworld1");
- final Element getGreeting = cache2.get(key);
- // Print the value
- System.out.println("value======//========"+getGreeting.getObjectValue());
- }
- }