Ehcache 是现在最流行的纯Java开源缓存框架,配置简单、结构清晰、功能强大,最初知道它,是从Hibernate的缓存开始的。Ehcache 3.0是一个里程碑式的版本;
这个新的主要版本的Ehcache提供以下
- 修改缓存API,利用Java泛型和简化了交互,
- 全面兼容javax。 缓存API(jsr - 107),
- Offheap存储功能,包括Offheap只缓存,
- Ehcache 2.倍提高性能,
- 开箱即用的春天由于javax缓存集成。 缓存的支持,
缓存管理
与之前版本相比,3.0主要是通过
CacheManager
我们先从hello Ehcache来讲解一下
import org.ehcache.Cache;
import org.ehcache.CacheManager;
import org.ehcache.config.builders.CacheConfigurationBuilder;
import org.ehcache.config.builders.CacheManagerBuilder;
import org.ehcache.config.builders.ResourcePoolsBuilder;
/**
*
* @Filename: Test.java
* @Description:
* @Version: 1.0
* @Author: lyg
* @Email: 964793210@qq.com <li>Date: 2016年6月28日</li>
* @History:<br>
*
*/
public class Test {
public static void main(String[] args) {
CacheManager cacheManager = CacheManagerBuilder
.newCacheManagerBuilder()
.withCache(
"preConfigured",
CacheConfigurationBuilder.newCacheConfigurationBuilder(
Long.class, String.class,
ResourcePoolsBuilder.heap(100)).build())
.build(true);
Cache<Long, String> preConfigured = cacheManager.getCache(
"preConfigured", Long.class, String.class);
Cache<Long, String> myCache = cacheManager.createCache(
"myCache",
CacheConfigurationBuilder.newCacheConfigurationBuilder(
Long.class, String.class,
ResourcePoolsBuilder.heap(100)).build());
preConfigured.put(2L, "hello Ehcache");
String value1=preConfigured.get(2L);
System.out.println(value1);
myCache.put(1L, "da one!");
String value = myCache.get(1L);
System.out.println(value);
cacheManager.close();
}
}
1.静态方法
org.ehcache.config.builders.CacheManagerBuilder.newCacheManagerBuilder
返回一个新的
org.ehcache.config.builders.CacheManagerBuilder
2.当我们使用builder来注册一个预先配置好的Cache,当我们调用
.build() 时,实际上是一个已经创建好的CacheManager。第一个参数string是用于给Cache取一个别名,第二个参数
org.ehcache.config.CacheConfiguration
配置
Cache
。 我们使用静态
.newCacheConfigurationBuilder()
方法
org.ehcache.config.builders.CacheConfigurationBuilder
创建一个默认的配置;
3.
最后,调用
.build()
返回一个完全实例化,但未初始化的
CacheManager
供我们使用
4.在我们开始使用CacheManager是,我们需要通过init()builder来初始化它,可以通过布尔值来觉得是否build(boolean);
5.现在开始声明一个Cache,并将他的句柄声明为preConfigured,通过cacheManager的get方法,输入别名得到我们预先声明的Cache;
6.我们可以根据需要创建一个新的Cache,他跟步骤2一样,传入一个别名myCache并进行初始化;
7.接着装载我们的Cache值,并成功的打印出我们的hello Ehcache;
这里有几点要说明一下,一个是因为ehcache的包比较多,所以我代码直接把引用的类路径也给贴出来了,第二个是官网最新的3.2 maven不能加载进来,而低于3.0的版本是运行不起来这段示例的。所以我把maven引用也贴出来
<dependency>
<groupId>javax.cache</groupId>
<artifactId>cache-api</artifactId>
<version>1.0.0</version>
</dependency>
<dependency>
<groupId>org.ehcache</groupId>
<artifactId>ehcache</artifactId>
<version>3.0.0</version>
</dependency>