最近项目用到了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缓存框架 ...
6. **API与集成**:EhCache提供了简单易用的API,开发者可以通过Java API进行缓存操作。同时,EhCache与许多流行框架如Spring、Hibernate等有很好的集成,使得在这些框架中使用EhCache变得十分方便。在Hibernate中,...
JAVA源码ehcache(Java缓存框架EhCache)
java资源ehcache(Java缓存框架 EhCache)提取方式是百度网盘分享地址
Ehcache是一款广泛使用的开源Java缓存框架,尤其在处理大量数据时,它可以显著提升应用程序的效率。本文将深入探讨Ehcache在实际应用中的实例。 一、Ehcache简介 Ehcache是由Terracotta公司开发的高性能、易用的...
ehcache(Java缓存框架 EhCache)
EhCache 是一个纯Java的进程内缓存框架,具有快速、精干等特点,是Hibernate中默认的CacheProvider。 下图是 Ehcache 在应用程序中的位置: 主要的特性有: 1. 快速.2. 简单.3. 多种缓存策略4. 缓存数据有两级:...
EhCache是一个开源的Java缓存框架,广泛用于提高应用程序的性能和响应速度。它允许在内存中存储数据,减少对数据库的访问,从而优化系统性能。以下是对EhCache框架的一些关键知识点的详细说明: 1. **缓存概念**: ...
EhCache是一个高性能、易用且广泛应用于Java环境中的分布式缓存框架。它主要用于提高应用程序的性能和响应速度,通过存储经常访问的数据到内存中,避免频繁地从数据库或者其他慢速资源中读取数据。本资料包将详细...
EhCache是一个高性能、易用的Java本地内存缓存框架,它被广泛应用于各种Java应用程序中,以提高数据访问速度,减轻数据库负载。基于Java的实例源码-ehcache(Java缓存框架 EhCache).zip这个压缩包包含了使用EhCache...
EhCache是一个开源的、基于Java的分布式缓存框架,被广泛用于提高应用程序的性能和响应速度。在Java世界中,缓存是优化系统性能的关键技术之一,它通过存储经常访问的数据来减少对数据库的访问,从而降低系统负载。...
EhCache是一个高性能、易用且广泛应用于Java环境中的分布式缓存框架,它极大地提高了应用程序的性能和响应速度。在Java开发中,特别是在处理大数据量或频繁读取的数据时,缓存技术是不可或缺的一部分。EhCache作为...
EhCache是一个高性能、易用的Java本地内存缓存框架,它被广泛应用于各种Java应用程序中,以提高数据访问速度并降低数据库负载。EhCache的设计目标是提供快速、轻量级的缓存解决方案,支持多线程环境,并且能够很好地...
基于java的开发源码-Ehcache Java 缓存框架.zip 基于java的开发源码-Ehcache Java 缓存框架.zip 基于java的开发源码-Ehcache Java 缓存框架.zip 基于java的开发源码-Ehcache Java 缓存框架.zip 基于java的开发源码-...
EhCache是一个高性能、易用的Java本地缓存框架,被广泛应用于许多Java应用程序中,以提高数据访问速度,减轻数据库负载。它提供了一个简单但功能强大的API,使得开发者能够轻松地集成到他们的项目中。在Java应用中,...
在本篇《Mybatis入门实例(二)——添加ehcache缓存支持》中,我们将深入探讨如何在Mybatis框架中集成Ehcache作为二级缓存,以提高数据访问的效率和性能。Ehcache是一个开源的Java分布式缓存,广泛用于缓存应用程序中...
**Ehcache** 是一个广泛使用的Java缓存框架,它为应用程序提供了高效的内存管理和数据缓存功能,以提高性能和响应速度。Ehcache最初由Terracotta公司开发,后来成为开源项目,并且在2014年被Spring源码库...
Ehcache 是一款广泛应用于Java开发中的开源缓存框架,其高效、易用且功能强大的特点使其在处理大量数据快速访问的问题上表现出色。本文将详细介绍Ehcache的基础知识、配置以及如何在实际项目中应用。 1. **Ehcache...
免责声明:资料部分来源于合法的互联网渠道收集和整理,部分自己学习积累成果,供大家学习参考与交流。收取的费用仅用于收集和整理资料耗费时间的酬劳。 本人尊重原创作者或出版方,资料版权归原作者或出版方所有,...
默认情况下,Hibernate提供了第一级缓存——Session缓存,但对于更复杂的缓存需求,如跨Session的共享缓存,Ehcache则作为第二级缓存被引入。第二级缓存可以存储更多数据,减少对数据库的依赖,提高并发性能。 **...