首页 > 其他分享 >Ehcache 介绍(3)--Ehcache3 基本使用

Ehcache 介绍(3)--Ehcache3 基本使用

时间:2024-03-10 10:33:45浏览次数:27  
标签:Ehcache 缓存 -- 配置 Ehcache3 build cacheManager class myCache

本文主要介绍 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 大小单位

 

 

 

标签:Ehcache,缓存,--,配置,Ehcache3,build,cacheManager,class,myCache
From: https://www.cnblogs.com/wuyongyin/p/18001313

相关文章

  • Nomic Embed:能够复现的SOTA开源嵌入模型
    Nomic-embed-text是2月份刚发布的,并且是一个完全开源的英文文本嵌入模型,上下文长度为8192。它在处理短文和长文本任务方面都超越了现有的模型,如OpenAI的Ada-002和text-embedding-3-small。该模型有137M个参数在现在可以算是非常小的模型了。模型、训练代码以及一个包含2.35亿文本......
  • 07_适配器模式
    适配器模式是一种结构型设计模式,它通过将一个类的接口转换成客户端所期望的另一个接口,使得原本由于接口不兼容而不能一起工作的类能够协同工作。适配器模式有三个主要角色:目标接口(Target):定义了客户端所期望的接口。源接口(Adaptee):需要被适配的类或接口。适配器(Adapter):将......
  • uni-app 微信小程序开发者工具预览项目
    1.打开微信开发者工具①设置->代理设置->选择使用系统代理②安全设置->开启服务端口2.项目中找到并打开配置文件mainfest.json->微信小程序配置->AppID配置3.运行小程序如果没有配置微信开发者工具地址,在工具下拉->设置->运行配置->小程序配置->......
  • InfluxDB 2.x
    InfluxDB2.x简介InfluxDB2.x是InfluxData公司推出的时间序列数据库的最新版本。与InfluxDB1.x相比,InfluxDB2.x引入了一些新的特性和改进,旨在提供更强大、灵活和易于使用的时间序列数据存储和查询解决方案。以下是InfluxDB2.x的一些关键特点和概念:Flux查询语言:I......
  • CPU型号后面的字母分别是什么含义?
    笔记本CPU的处理器型号后缀U、P、H各自代表着不同的性能和用途。 U系列代表超低功耗(Ultra-LowPower),专为轻薄型笔记本电脑和长续航时间设备设计,适用于日常办公和轻度应用。P系列则代表高性能(Performance),具备更高的时钟频率和计算能力,适用于复杂应用程序、多任务处理和图形设......
  • 【Python使用】python高级进阶知识md总结第2篇:HTTP 请求报文,HTTP响应报文【附代码文
    python高级进阶全知识知识笔记总结完整教程(附代码资料)主要内容讲述:操作系统,虚拟机软件,Ubuntu操作系统,Linux内核及发行版,查看目录命令,切换目录命令,绝对路径和相对路径,创建、删除文件及目录命令,复制、移动文件及目录命令,终端命令格式的组成,查看命令帮助。HTTP请求报文,HTTP响应报文......
  • 用栈实现队列
    用栈实现队列,需要两个栈,一个定义为stackIn,另一个定义为stackOut牛客NC76用两个栈实现队列1、队列的push()操作这个直接将数据压入stcakIn,就行voidpush(intnode){ stackIn.push(node);}2、队列的pop()操作这里有两种解法解法一:当stcakOut为空时再将stackIn中的数据......
  • 全面解析 Redis 持久化:RDB、AOF与混合持久化
    前言:每次你在游戏中看到玩家排行榜,或者在音乐应用中浏览热门歌单,有没有想过这个排行榜是如何做到实时更新的?当然,依靠Redis即可做到。在技术领域,我们经常听到「键值存储」这个词。但在Redis的世界里,这只是冰山一角。Redis的对象,不仅仅是简单的数据,它们是为各种任务量身定......
  • Ollama 运行 GGUF 模型
    Ollama默认直接支持很多模型,只需要简单的使用ollamarun命令,示例如下:ollamarungemma:2b就可安装、启动、使用对应模型。可直接支持的模型看:https://ollama.com/library在https://huggingface.co/models上有数万的模型,Ollama默认支持的不可能全部覆盖,那如何支持其它模型......
  • 国产光刻机系列产品
    SSX600系列光刻机 SSX600系列步进扫描投影光刻机采用四倍缩小倍率的投影物镜、工艺自适应调焦调平技术,以及高速高精的自减振六自由度工件台掩模台技术,可满足IC前道制造90nm、110nm、280nm关键层和非关键层的光刻工艺需求。该设备可用于8寸线或12寸线的大规模工业生产。SSB50......