SpringBoot 集成 Ehcache 缓存

1、引入Ehcache相关核心依赖,其他数据库等依赖不一一列举,根据自己需要进行引入

	<!--ehcache 缓存-->
		<dependency>
			<groupId>net.sf.ehcache</groupId>
			<artifactId>ehcache</artifactId>
		</dependency>

2、引入ehcache 相关配置文件

<?xml version="1.0" encoding="gbk"?>
<ehcache xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  xsi:noNamespaceSchemaLocation="ehcache.xsd">
    <diskStore path="java.io.tmpdir"/>
    <defaultCache maxElementsInMemory="10000" eternal="false" timeToIdleSeconds="30" timeToLiveSeconds="30" overflowToDisk="false"/>
    <!-- 
        配置自定义缓存
        maxElementsInMemory:缓存中允许创建的最大对象数
        eternal:缓存中对象是否为永久的,如果是,超时设置将被忽略,对象从不过期。
        timeToIdleSeconds:缓存数据的钝化时间,也就是在一个元素消亡之前,
                    两次访问时间的最大时间间隔值,这只能在元素不是永久驻留时有效,
                    如果该值是 0 就意味着元素可以停顿无穷长的时间。
        timeToLiveSeconds:缓存数据的生存时间,也就是一个元素从构建到消亡的最大时间间隔值,
                    这只能在元素不是永久驻留时有效,如果该值是0就意味着元素可以停顿无穷长的时间。
        overflowToDisk:内存不足时,是否启用磁盘缓存。
        memoryStoreEvictionPolicy:缓存满了之后的淘汰算法。 
        LFU:最不经常使用
        FIFO:先进先出
        LRU:最近最少使用
    -->
    <cache name="user"
        maxElementsInMemory="512" 
        eternal="false"
        overflowToDisk="false" 
        timeToIdleSeconds="17400"
        timeToLiveSeconds="18000"
        memoryStoreEvictionPolicy="LFU" />
</ehcache>

3、引入ehcache 配置类

/**
     * 本地堆缓存配置类
     * @author asus
     */
    @Configuration //将ehcache 配置文件注入spring 容器
    @EnableCaching //开启缓存
    public class EhcacheConfig {

        @Bean
        public EhCacheManagerFactoryBean ehCacheManagerFactoryBean() {
            EhCacheManagerFactoryBean cacheManagerFactoryBean = new EhCacheManagerFactoryBean();
            //取上文的配置文件xml
            cacheManagerFactoryBean.setConfigLocation(new ClassPathResource("ehcache.xml"));
            cacheManagerFactoryBean.setShared(true);
            return cacheManagerFactoryBean;
        }

        @Bean
        public EhCacheCacheManager eCacheCacheManager(EhCacheManagerFactoryBean bean) {
            return new EhCacheCacheManager(bean.getObject());
        }
    }

4、测试controller 类 代码
在这里插入图片描述
这边写了两个ehcache 的测试方法
spring为我们提供了注解来使用缓存

@Cacheable:该注解放置于方法上,标识该方法开启缓存,执行该方法时,会检查缓存中是否存在数据,如果存在则不从数据库查询,value指定缓存名字;此处表示该缓存使用ehcache 配置文件的名为user的缓存策略

@CacheEvict:清除缓存的注解,放置于方法上,value指定清除哪个缓存,此处表示清除user缓存。

@CachePut:该注解放置于方法上,标识该方法开启缓存,与Cacheable 的区别在于,Cacheable会先检查是否存在,而CachePut则不会进行检查,直接写入。

5、测试截图
项目启动,我们先测试使用缓存的方法
第一次使用postman 进行访问,情况如下
在这里插入图片描述
第一次访问,没有使用缓存,可以看到控制台输出信息
![在这里插入图片描述](https://img-blog.csdnimg.cn/20191115153604196.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3d4dzE5OTdh,size_16,color_FFFFFF,t_70

第二次使用postman 访问,情况如下
在这里插入图片描述

控制台输出如下,没有查询数据库,并且可以看到postman请求时间大大减少
在这里插入图片描述

再测试清除缓存的方法

清除成功
在这里插入图片描述
在这里插入图片描述

再访问查询方法看下,可以看到请求时间
在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值