首先要创建一个maven项目,加入依赖
<dependency>
<groupId>net.sf.ehcache</groupId>
<artifactId>ehcache</artifactId>
<version>2.10.3</version>
</dependency>
在resources路径下加入ehcache.xml配置文件
<?xml version="1.0" encoding="UTF-8"?>
<ehcache>
<!--
磁盘存储:将缓存中暂时不使用的对象,转移到硬盘,类似于Windows系统的虚拟内存
path:指定在硬盘上存储对象的路径
-->
<diskStore path="G:\ehcache"/>
<!--
defaultCache:默认的缓存配置信息,如果不加特殊说明,则所有对象按照此配置项处理
maxElementsInMemory:设置了缓存的上限,最多存储多少个记录对象
eternal:代表对象是否永不过期
overflowToDisk:当内存中Element数量达到maxElementsInMemory时,Ehcache将会Element写到磁盘中
-->
<defaultCache
maxElementsInMemory="100"
eternal="true"
overflowToDisk="true"/>
<!--
maxElementsInMemory设置成1,overflowToDisk设置成true,只要有一个缓存元素,就直接存到硬盘上去
eternal设置成true,代表对象永久有效
maxElementsOnDisk设置成0 表示硬盘中最大缓存对象数无限大
diskPersistent设置成true表示缓存虚拟机重启期数据
-->
<cache
name="a"
maxElementsInMemory="1"
eternal="true"
overflowToDisk="true"
maxElementsOnDisk="0"
diskPersistent="true"/>
</ehcache>
新建一个测试类编写测试代码
public static void main(String[] args) {
// 根据ehcache.xml配置文件创建Cache管理器
CacheManager manager = CacheManager.create("./src/main/resources/ehcache.xml");
// 获取指定的cache
Cache cache = manager.getCache("a");
Element element1 = new Element("denghuolanshan", "厉害");
Element element2 = new Element("java1234", "厉害a");
// 把一个元素添加到Cache中
cache.put(element1);
cache.put(element2);
// 根据key获取缓存元素
Element e1 = cache.get("denghuolanshan");
Element e2 = cache.get("java1234");
System.out.println(e1.getObjectValue());
System.out.println(e2);
// 刷新缓存
cache.flush();
// 关闭缓存管理器
manager.shutdown();
}
运行结果
SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
SLF4J: Defaulting to no-operation (NOP) logger implementation
SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.
厉害
[ key = java1234, value=厉害a, version=1, hitCount=1, CreationTime = 1556059516572, LastAccessTime = 1556059516705 ]
但是我更新欢官网上的写法,无需配置文件
package top.denghuolanshan;
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;
/**
* @ClassName GettingStartedEhcache
* @Description TODO
* @Author 小欧
* @Date 2019/4/17 6:53
* @Version 1.0
**/
public class GettingStartedEhcache {
public static void main(String[] args) {
// 利用CacheManagerBuilder的静态方法(new =CacheManagerBuilder())创建一个CacheManagerBuild实例
/**
* li'y利用builder实例的withCache定义一个别名为preConfigured的缓存,缓存存储的数据中
* key为Long类型的数据,这个缓存在CacheManager对象调用init()时创建
* withCache("preConfigured",CacheConfigurationBuilder.newCacheConfigurationBuilder(Long.class,String.class,ResourcePoolsBuilder.heap(10))).build;
*/
CacheManager manager = CacheManagerBuilder.newCacheManagerBuilder().build();
/**
* GettingStartedEhcache
*/
manager.init();
/**
* 根据缓存名称/键值对的类型获取缓存管理器中对应的缓存对象
*/
Cache<Long,String> preCache = manager.getCache("preConfigured",Long.class,String.class);
// 利用缓存管理器创建名为myCache的新缓存对象
Cache<Long,String> myCache = manager.createCache("myCache", CacheConfigurationBuilder.newCacheConfigurationBuilder(Long.class,String.class, ResourcePoolsBuilder.heap(100)));
// 在名为myCache的缓存对象中存入键为1值为da one的键值对
myCache.put(1L,"da one");
// 在名为myCache的缓存对象中取键为1的value
String value = myCache.get(1L);
System.err.println(value);
// 从缓存管理器中移除名为preConfigured的缓存对象
manager.removeCache("preConfigured");
// 关闭缓存管理器
manager.close();
}
}
实现Hello World结束