SpringBoot集成Ehcache

	1、pom.xml文件maven加入jar包
	<!-- cache缓存 -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-cache</artifactId>
    </dependency>
    <!-- ehcache缓存 -->
    <dependency>
        <groupId>net.sf.ehcache</groupId>
        <artifactId>ehcache</artifactId>
        <version>2.10.6</version>
    </dependency>
    
    2、加入ehcache配置文件(可以自定义策略)
    <?xml version="1.0" encoding="UTF-8"?>
		<ehcache xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
		         xsi:noNamespaceSchemaLocation="http://ehcache.org/ehcache.xsd"
		         updateCheck="false">
		
		
		    <!--指定一个文件目录,当EhCache把数据写到硬盘上时,将把数据写到这个文件目录下
		         user.home :         用户主目录
		         user.dir :          用户当前工作目录
		         java.io.tmpdir :    默认临时文件路径
		     -->
		    <diskStore path="java.io.tmpdir/Tmp_EhCache"/>
		
		    <!--
		    name:                            缓存名称
		    eternal:                         true表示对象永不过期,此时会忽略timeToIdleSeconds和timeToLiveSeconds属性,默认为false
		    timeToIdleSeconds:               设定允许对象处于空闲状态的最长时间,以秒为单位。当对象自从最近一次被访问后,如果处于空闲状态的时间超过了timeToIdleSeconds属性值,这个对象就会过期,EHCache将把它从缓存中清空。只有当eternal属性为false,该属性才有效。如果该属性值为0,则表示对象可以无限期地处于空闲状态
		    timeToLiveSeconds:               设定对象允许存在于缓存中的最长时间,以秒为单位。当对象自从被存放到缓存中后,如果处于缓存中的时间超过了 timeToLiveSeconds属性值,这个对象就会过期,EHCache将把它从缓存中清除。只有当eternal属性为false,该属性才有效。如果该属性值为0,则表示对象可以无限期地存在于缓存中。timeToLiveSeconds必须大于timeToIdleSeconds属性,才有意义
		    maxElementsInMemory:             内存中最大缓存对象数;maxElementsInMemory界限后,会把溢出的对象写到硬盘缓存中。注意:如果缓存的对象要写入到硬盘中的话,则该对象必须实现了Serializable接口才行
		    memoryStoreEvictionPolicy:       当达到maxElementsInMemory限制时,Ehcache将会根据指定的策略去清理内存。可选策略有:LRU(最近最少使用,默认策略)、FIFO(先进先出)、LFU(最少访问次数)
		    maxElementsOnDisk:               硬盘中最大缓存对象数,若是0表示无穷大
		    overflowToDisk:                  是否保存到磁盘,当系统宕机时
		    diskPersistent:                  是否缓存虚拟机重启期数据,是否持久化磁盘缓存,当这个属性的值为true时,系统在初始化时会在磁盘中查找文件名为cache名称,后缀名为index的文件,这个文件中存放了已经持久化在磁盘中的cache的index,找到后会把cache加载到内存,要想把cache真正持久化到磁盘,写程序时注意执行net.sf.ehcache.xml.Cache.put(Element element)后要调用flush()方法
		    diskSpoolBufferSizeMB:           这个参数设置DiskStore(磁盘缓存)的缓存区大小。默认是30MB。每个Cache都应该有自己的一个缓冲区
		    diskExpiryThreadIntervalSeconds: 磁盘失效线程运行时间间隔,默认为120秒
		    clearOnFlush:                    内存数量最大时是否清除
		    -->
		    <!--defaultCache:默认缓存策略,当ehcache找不到定义的缓存时,则默认缓存策略-->
		
		    <defaultCache eternal="false" maxElementsInMemory="1000" overflowToDisk="true"
		                  diskPersistent="true"
		                  timeToIdleSeconds="0" timeToLiveSeconds="600" memoryStoreEvictionPolicy="LRU"/>
		
		    <cache
		            name="myCache"
		            eternal="false"
		            maxElementsInMemory="200"
		            overflowToDisk="false"
		            diskPersistent="true"
		            timeToIdleSeconds="0"
		            timeToLiveSeconds="300"
		            memoryStoreEvictionPolicy="LRU"/>
		
		</ehcache>

3、项目配置文件中开启ehcache缓存
#开启mybatis-plus二级缓存
mybatis-plus.configuration.cache-enabled=true
spring.cache.ehcache.config=classpath:ehcache.xml

4、启动类配置
4.1开启缓存注解@EnableCaching
在这里插入图片描述
4.1加入启动配置
@Bean
public KeyGenerator keyGenerator(){
return new KeyGenerator() {
@Override
public Object generate(Object target, Method method, Object… params) {
StringBuilder sb = new StringBuilder();
sb.append(target.getClass().getName());
sb.append(method.getName());
for (Object obj : params) {
if (obj!=null){
sb.append(obj.toString());
}
}
return sb.toString();
}
};
}
5、应用
在实现类加入开启缓存注解
@Cacheable(cacheNames = {“myCache”},keyGenerator = “keyGenerator”)
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值