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 大小单位

 

 

 
posted @ 2024-03-10 10:26  且行且码  阅读(697)  评论(0编辑  收藏  举报