最近项目用到了java缓存——ehcahe缓存
ehcache介绍:
ehcache:java缓存框架、轻巧,是hibernate内置的缓存,其他特性自行百度之。
ehcache配置:
name ="" 缓存cache的名字
maxElementsInMemory="" 内存中保存对象最大个数
timeToLiveSeconds="" 对象存活时间,单位秒
timeToIdleSeconds="" 允许闲置时间 ,单位秒
eternal="false" 是否永久存活,设置为true,timeToLiveSeconds将失去作用
overflowToDisk="false" 是否输出到磁盘
memoryStoreEvictionPolicy="LFU" 失效策略,有FIFO(先进先出),LFU(最近最少使用),LFU(较少使用)
CacheManager
cacheManager的实例化有多重形式
//单例方式
CacheManager.create();
//记载默认路径下的ehcache.xml
CacheManager manager = new CacheManager();
//加载指定路径的xml
CacheManager manager = new CacheManager("src/config/ehcache.xml");
// 以编程的方式添加和删除cache
CacheManager manager = CacheManager.create();
manager.addCache();
Cache
方法:
//获取对该key对象的读操作锁
cache.acquireReadLockOnKey(key);
//获取该key对象的写操作锁,此时可读,但不可写
cache.acquireWriteLockOnKey(key);
//释放两种锁(一般放在finally块)
cache.releaseReadLockOnKey();
cache.releaseWriteLockOnKey(key);
//强制写入磁盘,包括在内存中的element
cache.flush();
//获取cache中key的element对象
cache.get(key);
//该key对象是在内存中还是在磁盘中
cache.isElementInMemory(key);
cache.isElementOnDisk(key);
ehcache.xml的配置就是配置cache属性的。
Element
element就是cache缓存的一个个对象,element有个key还有value。有两个最主要的方法
element.getObjectKey();//key值
element.getObjectValue();//value值,这两个都必须是Serializable
当然element也有一系列描述他的属性如被击中数,存活时间,可限制时间,创建时间等等。
实例
CacheManager manager = new CacheManager("./resource/ehache.xml");
Cache cache = manager.getCache("product");
for (int i = 0; i < 6; i++) {
Element e = new Element("key" + i, "value" + i);
cache.put(e);
}
List<String> keys = cache.getKeys();
for (String key : keys) {
System.out.println(key + "," + cache.get(key));
}
注意点:
1、存储的类必须实现Serializable接口,包括该类的属性也需要实现该接口
2、当还没达到内存最大数量时,每添加一个对象,则加在前一个添加的对象前面,内存中的对象采取的就是LRU算法。当超过之后,后面的对象直接写到磁盘。
疑问点:
假设一个Apple a 对象被缓存到磁盘上了,之后又继续向该缓存添加很多的对象之后,当从缓存磁盘中取得a对象的时候,发现他与之前的a对象不是同一个。怀疑是当缓存到某一个程度(肯定超过内存最大个数)的时候,ehcache从磁盘中取得的时候会自动新建一个实例。
- 大小: 5.8 KB
分享到:
相关推荐
基于java的开发源码-ehcache(Java缓存框架 EhCache).zip 基于java的开发源码-ehcache(Java缓存框架 EhCache).zip 基于java的开发源码-ehcache(Java缓存框架 EhCache).zip 基于java的开发源码-ehcache(Java缓存框架 ...
java缓存插件ehcache的应用实例
java源码:ehcache(Java缓存框架 EhCache).rar
ehcache(Java缓存框架 EhCache)
基于Java的ehcache(Java缓存框架 EhCache).zip
基于java的ehcache(Java缓存框架 EhCache).zip
EhCache 是一个纯Java的进程内缓存框架,具有快速、精干等特点,是Hibernate中默认的CacheProvider。
EhCache 是一个纯Java的进程内缓存框架,具有快速、精干等特点,是Hibernate中默认的CacheProvider。 下图是 Ehcache 在应用程序中的位置: 主要的特性有: 1. 快速.2. 简单.3. 多种缓存策略4. 缓存数据有两级:...
基于Java的源码-ehcache(Java缓存框架 EhCache).zip
基于Java的实例源码-ehcache(Java缓存框架 EhCache).zip
ehcache(Java缓存框架 EhCache).7z
基于Java的实例开发源码-ehcache(Java缓存框架 EhCache).zip
基于java的开发源码-Ehcache Java 缓存框架.zip 基于java的开发源码-Ehcache Java 缓存框架.zip 基于java的开发源码-Ehcache Java 缓存框架.zip 基于java的开发源码-Ehcache Java 缓存框架.zip 基于java的开发源码-...
基于Java的缓存框架Ehcache.zip
Java流行实用ehcache缓存,走过路过不要错过
免责声明:资料部分来源于合法的互联网渠道收集和整理,部分自己学习积累成果,供大家学习参考与交流。收取的费用仅用于收集和整理资料耗费时间的酬劳。 本人尊重原创作者或出版方,资料版权归原作者或出版方所有,...
ehcache(Java缓存框架 EhCache)源码
EhCache 是一个纯 Java 的进程内缓存框架,具有快速、精干等特点,是 Hibernate 中默认的 CacheProvider。Ehcache 是一种广泛使用的开源 Java 分布式缓存。主要面向通用缓存,Java EE 和轻量级容器。它具有内存和...
基于java的开发源码-缓存框架Ehcache.zip
ehcache页面缓存技术ehcache页面缓存技术ehcache页面缓存技术ehcache页面缓存技术ehcache页面缓存技术ehcache页面缓存技术ehcache页面缓存技术ehcache页面缓存技术ehcache页面缓存技术ehcache页面缓存技术ehcache...