文哥通过本文主要向大家介绍了ehcache等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
ehcache是一个比较成熟的java缓存框架,它提供了用内存,磁盘文件存储,以及分布式存储方式等多种灵活的cache管理方案。ehcache最早从hibernate发展而来。由于3.x的版本和2.x的版本API差异比较大。这里直接学习最新版本的了,但是最后整合spring的时候还是有2.x。
二、安装
由于我的项目是使用maven管理的,因此只要在pom文件中添加如下代码即可。
<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.3.1</version>
</dependency>
好像ehcache还要依赖上面的那个Cache,因此最好两个多加上。
三、使用
1、快速入门__JAVA实现
CacheManager cacheManager = CacheManagerBuilder.newCacheManagerBuilder()
.withCache("preConfigured",
CacheConfigurationBuilder.newCacheConfigurationBuilder(Long.class, String.class, ResourcePoolsBuilder.heap(10)))
.build();
cacheManager.init();
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(10)));
myCache.put(1L, "da one!");
String value = myCache.get(1L);
cacheManager.removeCache("preConfigured");
cacheManager.close();
这里使用的官网的例子。
- CacheManagerBuilder.newCacheManagerBuilder():创建缓存构造器的构建者,类似工厂模式,注意,里面的实现不是单例。
- .withCache() :相当于创建一个自带缓存的CacheManager。
-
build() :这个方法就是创建CacheManager了。
上面的build方法接受一个boolean参数:当为true时,CacheManager在使用时就不用初始化,否则,就需要CacheManager调用init()进行初始化操作。默认为false。
-
cacheManager.getCache():获取缓存
- cacheManager.createCache():创建缓存。
- myCache.put(1L, “da one!”):在缓存中添加值
2、快速入门__XML实现
<cache alias="foo">
<!-- 缓存键值对的类型 -->
<key-type>java.lang.String</key-type>
<value-type>java.lang.String</value-type>
<!-- 配置缓存 -->
<expiry>
<ttl unit="seconds">2</ttl>
</expiry>
<resources>
<!-- 在堆中申请2000个entries -->
<heap unit="entries">2000</heap>
<!-- 最大非堆内存 -->
<offheap unit="MB">500</offheap>
</resources>
</cache>
<!-- 定一个模板 -->
<cache-template name="myDefaults">
<key-type>java.lang.Long</key-type>
<value-type>java.lang.String</value-type>
<heap unit="entries">200</heap>
</cache-template>
<!-- 使用上面的模板 -->
<cache alias="bar"