Ehcache 介绍(3)--Ehcache3 基本使用
本文主要介绍 Ehacche3 的基本使用,文中所使用到的软件版本:Java 1.8.0_341、Ehcache 3.10.8。
1、引入依赖
<dependency> <groupId>org.ehcache</groupId> <artifactId>ehcache</artifactId> <version>3.10.8</version> <exclusions> <exclusion> <groupId>org.glassfish.jaxb</groupId> <artifactId>jaxb-runtime</artifactId> </exclusion> </exclusions> </dependency>
2、缓存配置和创建
2.1、XML 方式配置缓存
A、在 src/main/resources 目录下新建 ehcache3.xml:
<?xml version="1.0" encoding="UTF-8"?> <config xmlns="http://www.ehcache.org/v3" xmlns:jsr107="http://www.ehcache.org/v3/jsr107" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.ehcache.org/v3 http://www.ehcache.org/schema/ehcache-core-3.10.xsd http://www.ehcache.org/v3/jsr107 http://www.ehcache.org/schema/ehcache-107-ext-3.10.xsd"> <persistence directory="D:\temp"/> <cache alias="myCache"> <key-type>java.lang.Integer</key-type> <value-type>java.lang.String</value-type> <expiry> <tti unit="minutes">5</tti> </expiry> <resources> <heap unit="MB">10</heap> <offheap unit="MB">50</offheap> <disk persistent="true" unit="MB">500</disk> </resources> </cache> </config>
B、加载配置
@Test public void test01() { URL url = this.getClass().getClassLoader().getResource("ehcache3.xml"); XmlConfiguration xmlConfiguration = new XmlConfiguration(url); CacheManager cacheManager = CacheManagerBuilder.newCacheManager(xmlConfiguration); cacheManager.init(); Cache<Integer, String> myCache = cacheManager.getCache("myCache", Integer.class, String.class); myCache.put(1, "aaa"); log.info(myCache.get(1)); cacheManager.close(); }
2.2、API 方式配置缓存
A、方式一
@Test public void test02() { CacheManager cacheManager = CacheManagerBuilder.newCacheManagerBuilder() .with(CacheManagerBuilder.persistence("d:/temp")) .build(true); ResourcePools resourcePools = ResourcePoolsBuilder.newResourcePoolsBuilder() .heap(1, MemoryUnit.MB) .disk(10, MemoryUnit.MB, true) .build(); CacheConfiguration<Integer, String> cacheConfiguration = CacheConfigurationBuilder .newCacheConfigurationBuilder(Integer.class, String.class, resourcePools) .withExpiry(ExpiryPolicyBuilder.timeToIdleExpiration(Duration.ofSeconds(100))) .withExpiry(ExpiryPolicyBuilder.timeToLiveExpiration(Duration.ofSeconds(500))) .build(); Cache<Integer, String> myCache = cacheManager.createCache("myCache", cacheConfiguration); myCache.put(1, "aaa"); log.info(myCache.get(1)); cacheManager.close(); }
B、方式二
@Test public void test03() { ResourcePools resourcePools = ResourcePoolsBuilder.newResourcePoolsBuilder() .heap(1, MemoryUnit.MB) .disk(10, MemoryUnit.MB, true) .build(); CacheConfiguration<Integer, String> cacheConfiguration = CacheConfigurationBuilder .newCacheConfigurationBuilder(Integer.class, String.class, resourcePools) .withExpiry(ExpiryPolicyBuilder.timeToIdleExpiration(Duration.ofSeconds(100))) .withExpiry(ExpiryPolicyBuilder.timeToLiveExpiration(Duration.ofSeconds(500))) .build(); CacheManager cacheManager = CacheManagerBuilder.newCacheManagerBuilder() .with(CacheManagerBuilder.persistence("d:/temp")) .withCache("myCache", cacheConfiguration) .build(true); Cache<Integer, String> myCache = cacheManager.getCache("myCache", Integer.class, String.class); //myCache.put(1, "aaa"); log.info(myCache.get(1)); cacheManager.close(); }
3、Ehcache3 配置参数说明
参数 | 说明 | |||
persistence | 直接配置 | |||
directory | 数据存储目录 | |||
cache | 缓存配置 | |||
alias | 缓存名称 | |||
key-type | 缓存 key 的类型 | |||
value-type | 缓存 value 的类型 | |||
expiry | 缓存过期配置 | |||
tti | 缓存中条目的最大空闲时间 | |||
ttl | 缓存中条目的最大存活时间 | |||
resources | 资源配置 | |||
heap | 堆内存配置 | |||
unit | 大小单位 | |||
offheap | 堆外存配置 | |||
unit | 大小单位 | |||
disk | 磁盘配置 | |||
persistence | 是否持久化 | |||
unit | 大小单位 |