springboot默认的缓存管理

常用的缓存注解
  1. @EnableCaching:在类上使用,表示使用基于注解的方式进行缓存管理
  2. @Cacheable:用在类或者方法上。
    1. 该注解用在方法上时,在方法执行前,先根据key在缓存中查询是否有key对应的value值,有的话不执行目标方法;没有则执行目标方法,并将方法的返回值作为value,以键值对的方式存入缓存。
    2. 属性cacheNames/value:指定缓存的名字
    3. 属性key:指定缓存中的键
  3. @CachePut
  4. @CacheEvict:用于删除缓存数据
    1. 属性cacheNames/value:指定缓存的名字
    2. 属性key:指定缓存中的键,一般使用SpEL表达式指定
  5. @Caching
  6. @CacheConfig:用于配置公共属性

springboot整合redis实现缓存管理

ehcache.xml配置如下:

<?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" monitoring="autodetect"
         dynamicConfig="true" >
    <!-- path属性:配置缓存持久化到磁盘的路径-->
    <diskStore path="java.io.tmpdir/ehcache"/>

    <!-- maxElementsInMemory:内存中可以存放的元素数量-->
    <!-- eternal属性:是否永驻内存-->
    <!-- timeToIdleSeconds属性:失效前允许闲置时间,单位秒-->
    <!-- timeToLiveSeconds属性:失效前允许存在时间,单位秒-->
    <!-- overflowToDisk属性:内存不足时是否可以缓存到磁盘-->
    <!-- diskPersistent属性:是否将缓存持久化到磁盘-->
    <!-- diskExpiryThreadIntervalSeconds属性:磁盘缓存的清理线程运行间隔,默认是120秒-->
    <!-- memoryStoreEvictionPolicy属性:当内存中的缓存数量达到 maxElementsInMemory后的清理策略-->
    <!-- maxElementsOnDisk属性:磁盘缓存中最多可以存放的元素数量,0表示无穷大-->
    <!-- diskSpoolBufferSizeMB:设置磁盘缓存的缓存区大小,以MB为单位-->
    <!-- clearOnFlush属性:内存数量最大时是否清除-->
    <!-- maxEntriesLocalHeap属性:堆内存中最大缓存对象数,0没有限制-->
    <!-- maxEntriesLocalDisk属性: 硬盘最大缓存个数。-->
    <defaultCache
            maxElementsInMemory="50000"
            eternal="false"
            timeToIdleSeconds="3600"
            timeToLiveSeconds="3600"
            overflowToDisk="true"
            diskPersistent="false"
            diskExpiryThreadIntervalSeconds="120"
    />

    <!-- name属性:缓存的名称-->
    <cache name="CONSTANT"
    	   maxElementsInMemory="50000"
           eternal="true"
    	   clearOnFlush="false"
           overflowToDisk="true"
           diskSpoolBufferSizeMB="1024"
           maxElementsOnDisk="100000"
           diskPersistent="false"
           diskExpiryThreadIntervalSeconds="120"
           memoryStoreEvictionPolicy="LFU"
           transactionalMode="off">
    </cache>
    <!--SESSION缓存-->
    <cache name="SESSION"
           maxElementsInMemory="50000"
           timeToIdleSeconds="86400"
           timeToLiveSeconds="86400"
           eternal="true"
           clearOnFlush="false"
           overflowToDisk="true"
           diskSpoolBufferSizeMB="1024"
           maxElementsOnDisk="100000"
           diskPersistent="false"
           diskExpiryThreadIntervalSeconds="120"
           memoryStoreEvictionPolicy="LFU"
           transactionalMode="off">
    </cache>

    <!--app数据缓存-->
    <cache name="APPLICATION"
           maxElementsInMemory="50000"
           timeToIdleSeconds="3600"
           timeToLiveSeconds="3600"
           eternal="true"
           clearOnFlush="false"
           overflowToDisk="true"
           diskSpoolBufferSizeMB="1024"
           maxElementsOnDisk="100000"
           diskPersistent="false"
           diskExpiryThreadIntervalSeconds="120"
           memoryStoreEvictionPolicy="LFU"
           transactionalMode="off">
    </cache>

</ehcache>