iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >Ehcache缓存框架如何在Java项目中使用
  • 905
分享到

Ehcache缓存框架如何在Java项目中使用

javaehcacheava 2023-05-31 07:05:09 905人浏览 泡泡鱼
摘要

今天就跟大家聊聊有关Ehcache缓存框架如何在Java项目中使用 ,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。前言JAVA缓存实现方案有很多,最基本的自己使用Map去构建缓存,或

今天就跟大家聊聊有关Ehcache缓存框架如何在Java项目中使用 ,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。

前言

JAVA缓存实现方案有很多,最基本的自己使用Map去构建缓存,或者使用memcached或Redis,但是上述两种缓存框架都要搭建服务器,而Map自行构建的缓存可能没有很高的使用效率,那么我们可以尝试一下使用Ehcache缓存框架。

Ehcache主要基于内存缓存,磁盘缓存为辅的,使用起来方便。下面介绍如何在项目中使用Ehcache

入门使用教程

Maven引用

<dependency> <groupId>net.sf.ehcache</groupId> <artifactId>ehcache</artifactId> <version>2.10.4</version></dependency>

在classpath下建立一个ehcache.xml

<?xml version="1.0" encoding="UTF-8"?><ehcache><!--timeToIdleSeconds 当缓存闲置n秒后销毁 --> <!--timeToLiveSeconds 当缓存存活n秒后销毁 --> <!-- 缓存配置     name:缓存名称。     maxElementsInMemory:缓存最大个数。     eternal:对象是否永久有效,一但设置了,timeout将不起作用。     timeToIdleSeconds:设置对象在失效前的允许闲置时间(单位:秒)。仅当eternal=false对象不是永久有效时使用,可选属性,默认值是0,也就是可闲置时间无穷大。     timeToLiveSeconds:设置对象在失效前允许存活时间(单位:秒)。最大时间介于创建时间和失效时间之间。仅当eternal=false对象不是永久有效时使用,默认是0.,也就是对象存活时间无穷大。     overflowToDisk:当内存中对象数量达到maxElementsInMemory时,Ehcache将会对象写到磁盘中。     diskSpoolBufferSizeMB:这个参数设置DiskStore(磁盘缓存)的缓存区大小。默认是30MB。每个Cache都应该有自己的一个缓冲区。     maxElementsOnDisk:硬盘最大缓存个数。     diskPersistent:是否缓存虚拟机重启期数据 Whether the disk store persists between restarts of the Virtual Machine. The default value is false.     diskExpiryThreadIntervalSeconds:磁盘失效线程运行时间间隔,默认是120秒。     memoryStoreEvictionPolicy:当达到maxElementsInMemory限制时,Ehcache将会根据指定的策略去清理内存。默认策略是LRU(最近最少使用)。你可以设置为FIFO(先进先出)或是LFU(较少使用)。     clearOnFlush:内存数量最大时是否清除。 -->   <!-- 磁盘缓存位置 -->  <diskStore path="java.io.tmpdir/easylink-mall-WEB/ehcache"/>  <!-- 默认缓存 -->  <defaultCache      maxElementsInMemory="10000"      eternal="false"      timeToIdleSeconds="120"      timeToLiveSeconds="120"      maxElementsOnDisk="10000000"      diskExpiryThreadIntervalSeconds="120"      memoryStoreEvictionPolicy="LRU">    <persistence strategy="localTempSwap"/>  </defaultCache>  <!-- 商户申请数据缓存 数据缓存40分钟 -->  <cache      name="merchant-apply-cache"      eternal="false"      timeToIdleSeconds="2400"      timeToLiveSeconds="2400"      maxEntriesLocalHeap="10000"      maxEntriesLocalDisk="10000000"      diskExpiryThreadIntervalSeconds="120"      overflowToDisk="false"      memoryStoreEvictionPolicy="LRU">  </cache></ehcache>

spring的cacheManager结合使用

<?xml version="1.0" encoding="UTF-8"?><beans xmlns="Http://www.springframework.org/schema/beans"  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  xmlns:cache="http://www.springframework.org/schema/cache"  xsi:schemaLocation="     http://www.springframework.org/schema/beans     http://www.springframework.org/schema/beans/spring-beans.xsd     http://www.springframework.org/schema/cache     http://www.springframework.org/schema/cache/spring-cache.xsd">  <!-- 支持缓存注解 -->  <cache:annotation-driven cache-manager="cacheManager" />  <!-- 默认是cacheManager -->  <bean id="cacheManager" class="org.springframework.cache.ehcache.EhCacheCacheManager">    <property name="cacheManager" ref="cacheManagerFactory"/>  </bean>  <!-- cache管理器配置 -->  <bean id="cacheManagerFactory" class="org.springframework.cache.ehcache.EhCacheManagerFactoryBean">    <property name="configLocation" value="classpath:ehcache.xml"/>    <property name="shared" value="true" />  </bean></beans>

代码使用

import org.junit.Test;import org.junit.runner.RunWith;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.cache.Cache;import org.springframework.cache.CacheManager;import org.springframework.test.context.ContextConfiguration;import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;import com.baomidou.mybatisplus.toolkit.IdWorker;import com.easylink.mall.entity.Merchant;@RunWith(SpringJUnit4ClassRunner.class)@ContextConfiguration(locations = "classpath:spring/spring.xml")public class EhcacheTest {  @Autowired  private CacheManager cacheManager;  @Test  public void execute() {    // 获取商户申请缓存容器    Cache cache = cacheManager.getCache("merchant-apply-cache");    Merchant merchant = new Merchant();    Long id = IdWorker.getId();    merchant.setId(id);    merchant.setName("缓存测试");    // 将商户申请数据添加至缓存中 // key : id value : object    cache.put(id, merchant);    // 获取商户申请数据    // 方法1    Merchant cacheMerchant1 = (Merchant) cache.get(id).get();    System.out.println(cacheMerchant1.getName());    // 方法2    Merchant cacheMerchant2 = cache.get(id, Merchant.class);    System.out.println(cacheMerchant2.getName());    // 将商户申请数据从缓存中移除    cache.evict(id);  }}

注意事项

cache.get(key) 和cache.get(key, class);方法,由于不知道你存入的key是什么类型,所以get的时候不会做key的类型检查,如上述例子中

Long id = IdWorker.getId();cache.put(id, merchant);Merchant cacheMerchant2 = cache.get(id, Merchant.class);

put进去时的key是Long类型的,get的时候也只能传入对应Long类型的key才能获取到对应的value,如果传入的是String类型的key,即使两个key的值是一致的,也会导致无法获取到对应的value。这个情况很容易发生在对request请求的参数,由于是String字符串类型,但是忘了做类型转换就直接把这个String当做key去获取对应的value。导致获取不到,请同学们要注意,亲身经历,血与泪的教训。

看完上述内容,你们对Ehcache缓存框架如何在Java项目中使用 有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注编程网精选频道,感谢大家的支持。

--结束END--

本文标题: Ehcache缓存框架如何在Java项目中使用

本文链接: https://www.lsjlt.com/news/224262.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Ehcache缓存框架如何在Java项目中使用
    今天就跟大家聊聊有关Ehcache缓存框架如何在Java项目中使用 ,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。前言JAVA缓存实现方案有很多,最基本的自己使用Map去构建缓存,或...
    99+
    2023-05-31
    java ehcache ava
  • 如何在java项目中应用SSM框架
    本篇文章给大家分享的是有关如何在java项目中应用SSM框架,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。配置环境变量配置完后,使用命令行输入mvn -version查看是否配...
    99+
    2023-05-30
    java ssh框架
  • 如何在go项目中使用容器化存储框架?
    如何在 Go 项目中使用容器化存储框架? 随着云原生时代的到来,容器化存储框架在分布式系统中变得越来越重要。在 Go 项目中使用容器化存储框架可以提高系统的可扩展性和容错性。本文将介绍如何在 Go 项目中使用容器化存储框架,并通过演示代码来...
    99+
    2023-10-07
    存储 框架 容器
  • shiro框架04会话管理+缓存管理+Ehcache使用
    目录 一、会话管理 1.基础组件 1.1 SessionManager 1.2 SessionListener 1.3 SessionDao 1.4 会话验证 1.5 案例 二、缓存管理 1、为什么要使用缓存 2、什么是ehcache 3、...
    99+
    2023-10-10
    缓存 java 开发语言
  • 如何在java项目中操作Redis缓存
    这篇文章给大家介绍如何在java项目中操作Redis缓存,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。1.导入必须的Jar包使用Java操作Redis需要两个必须的Jar包:jedis-2.5.1.jar 和 ...
    99+
    2023-05-31
    java redis
  • ASP 框架中如何使用缓存 npm?
    ASP 框架是一种非常流行的 Web 应用程序框架,它使用 Microsoft ASP.NET 技术来创建 Web 应用程序。在 ASP 框架中,缓存 npm 是一种非常有用的工具,它可以帮助您提高应用程序的性能并减少数据库访问次数。 在本...
    99+
    2023-11-09
    框架 缓存 npm
  • Java同步框架API:如何在项目中正确使用它?
    在Java项目开发中,多线程编程是非常常见的需求。但是,在多线程并发环境下,线程安全问题是一个十分容易被忽视的问题。如果没有正确地处理线程安全问题,很容易导致数据的不一致性、程序的崩溃等问题。因此,Java提供了一些同步框架API,用于帮...
    99+
    2023-09-05
    同步 框架 api
  • LocalCache在Java项目中如何实现本地缓存
    今天就跟大家聊聊有关LocalCache在Java项目中如何实现本地缓存,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。一、本地缓存应用场景localcache有着极大的性能优势: 单...
    99+
    2023-05-31
    本地缓存 localstorage java
  • 如何在Java Spring项目中使用高效的缓存编程算法?
    在Java Spring项目中使用高效的缓存编程算法可以显著提高应用程序的性能,减少响应时间和资源消耗。本文将介绍常见的缓存技术和如何在Java Spring项目中使用高效的缓存编程算法。 一、常见的缓存技术 1.本地缓存:本地缓存是缓存在...
    99+
    2023-09-03
    spring 缓存 编程算法
  • 如何在 ASP 框架中使用 npm 缓存提高性能?
    在开发 ASP.NET 应用程序时,我们通常使用 NuGet 包管理器来引用第三方依赖项。但是,如果你已经在项目中使用了 npm 包管理器,你可能会想知道如何在 ASP.NET 应用程序中使用 npm 缓存来提高性能。 npm 缓存是一个本...
    99+
    2023-11-09
    框架 缓存 npm
  • 浅谈redis缓存在项目中的使用
    背景 Redis 是一个开源的内存数据结构存储系统。 可以作为数据库、缓存和消息中间件使用。 支持多种类型的数据结构。 Redis 内置了 复制(replication),LUA脚...
    99+
    2024-04-02
  • ASP 接口框架文件:如何在项目中使用它?
    ASP 接口框架文件是一种帮助开发人员快速创建 ASP 接口的工具,可以大大提高开发效率和代码质量。在本文中,我们将会介绍如何在项目中使用 ASP 接口框架文件,并且提供一些演示代码供大家参考。 一、什么是 ASP 接口框架文件? ASP...
    99+
    2023-07-27
    接口 框架 文件
  • 如何使用 Spring 框架在 Go 项目中建立索引?
    Spring框架是一个非常流行的Java框架,它提供了很多强大的工具和功能,可以帮助开发者快速构建高效的Java应用程序。但是,在一些Go项目中,我们也想使用Spring框架来建立索引,这该怎么做呢?下面,我将介绍如何使用Spring框架在...
    99+
    2023-10-19
    索引 教程 spring
  • 缓存存储与Java异步编程:如何在项目中正确应用?
    随着互联网技术的发展,应用程序的性能和响应速度已经成为了用户对软件的基本要求之一。缓存存储和异步编程是提高应用程序性能和响应速度的两个重要技术手段。在本文中,我们将讨论缓存存储和Java异步编程的基本概念及其在项目中的正确应用。 一、缓存...
    99+
    2023-06-28
    异步编程 缓存 存储
  • 如何在java中使用WebMagic框架
    本篇文章为大家展示了如何在java中使用WebMagic框架,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。Java可以用来干什么Java主要应用于:1. web开发;2. Android开发;3. ...
    99+
    2023-06-14
  • 如何在ASP中使用缓存框架接口来提高性能?
    ASP是一种非常流行的Web开发框架,但是在使用ASP进行开发时,我们经常会遇到性能问题。为了解决这些问题,我们可以使用缓存框架接口来提高性能。在本文中,我们将介绍如何在ASP中使用缓存框架接口来提高性能。 一、缓存框架接口简介 缓存框架接...
    99+
    2023-06-14
    缓存 框架 接口
  • File如何在Java项目中使用
    File如何在Java项目中使用?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。Java中File的实例详解File代表文件或者目录的类构造函数File(File...
    99+
    2023-05-31
    java file ava
  • memcached如何在java项目中使用
    memcached如何在java项目中使用?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。Memcached是一个高性能的分布式内存对象缓存系统,本文介绍了jav...
    99+
    2023-05-31
    java memcached ava
  • Arrays.asList()如何在Java项目中使用
    本篇文章给大家分享的是有关Arrays.asList()如何在Java项目中使用,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。Arrays.asList() 是将数组作为列表。...
    99+
    2023-05-31
    java arrays.aslist() ava
  • zookeeper如何在java项目中使用
    这篇文章将为大家详细讲解有关zookeeper如何在java项目中使用,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。一、zookeeper的基本原理数据模型,如下:ZooKeeper数据模型...
    99+
    2023-05-31
    zookeeper java ava
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作