编程开源技术交流,分享技术与知识

网站首页 > 开源技术 正文

springboot整合EhCache快速入门(springboot ehcache3)

wxchong 2024-08-31 04:08:20 开源技术 10 ℃ 0 评论

1. pom文件中引入jar包

<dependency>

<groupId>net.sf.ehcache</groupId>

<artifactId>ehcache</artifactId>

</dependency>

2. resources目录下创建ehcache.xml配置文件

或者其他名字的配置文件xxx.xml,并在application.proerties文件中

spring.cache.ehcache.config= # ehcache配置文件地址

指定配置文件地址

SpringBoot会自动为我们配置EhCacheManager的bean。

<?xml version="1.0" encoding="UTF-8" ?>

<ehcache>

<cache name="objectCache" maxElementsInMemory="1000"></cache>

</ehcache>

3. SpringBootApplication上增加 @EnableCaching注解

写一个简单的Controller及get和set两个方法用于测试:

先访问http://127.0.0.1:8080/cache/set 将当前时间放进缓存中,然后在访问http://127.0.0.1:8080/cache/get查看缓存结果,可以发现,在get请求中我们已经正确拿到了之前缓存的数据。

附上EhCacheHelper:

除了按默认配置加载外也可以自己根据指定配置文件创建CacheManager,比如:

public static CacheManager createCacheManager(String cacheConfigFileName){

if(cacheConfigFileName==null)cacheConfigFileName="/ehcache2.xml";

URL url = EhCacheHelper.class.getResource(cacheConfigFileName);

return CacheManager.create(url);

} 如果自定义CacheManager 主应用程序不用加@EnableCaching也可以的。

4. 缓存的设置参数

缓存大小的限制可以设置在CacherManager上,也可以设置在单独的cache上,我们可以设置缓存使用内存的大小,也可以 设置缓存使用磁盘的大小,但是使用堆内存的大小是必须设置的,其他不设可不设,默认不设就是不限制。

Cachemanager级别:

maxBytesLocalHeap:是用来限制缓存所能使用的堆内存的最大字节数的,其单位可以是K、M或G,不区分大小写。默认为0,表示不限制。

maxBytesLocalOffHeap:是用来限制缓存所能使用的非堆内存的最大字节数,其单位也可以是K、M或G。默认是0,表示不限制。

maxBytesLocalDisk:是用来限制缓存所能使用的磁盘的最大字节数的,其单位可以是K、M或G。默认是0,表示不限制。只有在单机环境下才可以使用本地磁盘,分布式环境下是不可以使用的。

Cache级别:

diskStore :将缓存中暂时不使用的对象转移到指定存储位置,可指定磁盘中文件夹位置。

defaultCache :默认的管理策略,如果不加特殊说明,则所有对象按照此配置项处理

name:Cache的名称,必须是唯一的(ehcache会把这个cache放到HashMap里)

maxElementsInMemory:在内存中缓存的elment的最大数目

overflowToDisk:如果内存中数据超过内存限制,是否要缓存到磁盘上

eternal:设定缓存的elemen是否永远不过期。如果为true,则缓存的数据始终有效,如果为false那么还要根据timetoldleSeconds,timeToLiveSeconds判断。

overflowToDisk:如果内存中数据超过内存限制,是否要缓存到磁盘上。

timeToLiveSeconds:对象存活时间,指对象从创建到失效所需要的时间。只对eternal为false的有效。默认值为0,表示一直可以访问。(单位:秒)

timeToIdleSeconds:对象空闲时,指对象在多长时间没有被访问就会失效。只对eternal为false的有效。默认值为0。(单位:秒)

diskPersistent:是否在磁盘上持久化。指重启JVM后,数据是否有效,默认为false

diskExpiryThreadIntervalSeconds:对象检测线程运行时间间隔。标识对象状态的线程多长时间运行一次。默认是120秒。(单位:秒)

memoryStoreEvictionPolicy:如果内存中数据超过内存限制,向磁盘缓存定时的策略,默认值为LRU,可选FIFO、LFU

diskSpoolBufferSizeMB:设置DiskStore(磁盘缓存)的缓存区大小。默认是30MB。每个cache都应该有自己的一个缓冲区。

clearOnFlush:内存数量最大时是否清除。

缓存的3种清空策略:

FIFO:first in first out (先进先出)

LFU:Less Frequency Used (最少使用)一直以来最少被使用的。缓存的元素有一个hit属性,hit值最小的将会被清除缓存。

LRU:Least Recently Used(最近最少使用)(ehcache默认值)缓存的元素有一个时间戳,当缓存容量满了,而又需要腾出地方来缓存新的元素的时候,那么现有缓存元素中时间戳离当前时间最远的元素将被清除缓存。

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表