配置ehCache缓存策略@Cacheable,@CacheEvict,@CachePut

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/c_royi/article/details/83870426

ehCache

ehcache.xml解析

<defaultCache
maxElementsInMemory="10000"
eternal="false"
overflowToDisk="true"
timeToIdleSeconds="10"
timeToLiveSeconds="120"
diskPersistent="false"
memoryStoreEvictionPolicy="LRU"
diskExpiryThreadIntervalSeconds="120"/>

    <!-- maxElementsInMemory 内存中最大缓存对象数,看着自己的heap大小来设置 -->
    <!-- eternal:true表示对象永不过期,此时会忽略timeToIdleSeconds和timeToLiveSeconds属性,默认为false -->
    <!-- overflowToDisk:true表示当内存缓存的对象数目达到了maxElementsInMemory界限后,
    会把溢出的对象写到硬盘缓存中。注意:如果缓存的对象要写入到硬盘中的话,则该对象必须实现了Serializable接口才行。-->
    <!-- maxElementsOnDisk:硬盘中最大缓存对象数,若是0表示无穷大 -->

    <!-- diskSpoolBufferSizeMB:磁盘缓存区大小,默认为30MB。每个Cache都应该有自己的一个缓存区。-->
    <!-- diskPersistent:是否缓存虚拟机重启期数据  -->
    <!-- diskExpiryThreadIntervalSeconds:磁盘失效线程运行时间间隔,默认为120-->

    <!-- timeToIdleSeconds: 设定允许对象处于空闲状态的最长时间,以秒为单位。当对象自从最近一次被访问后,
    如果处于空闲状态的时间超过了timeToIdleSeconds属性值,这个对象就会过期,
    EHCache将把它从缓存中清空。只有当eternal属性为false,该属性才有效。如果该属性值为0,
    则表示对象可以无限期地处于空闲状态 -->
    <!-- timeToLiveSeconds:设定对象允许存在于缓存中的最长时间,以秒为单位。当对象自从被存放到缓存中后,
    如果处于缓存中的时间超过了 timeToLiveSeconds属性值,这个对象就会过期,
    EHCache将把它从缓存中清除。只有当eternal属性为false,该属性才有效。如果该属性值为0,
    则表示对象可以无限期地存在于缓存中。timeToLiveSeconds必须大于timeToIdleSeconds属性,才有意义 -->

    <!-- memoryStoreEvictionPolicy:当达到maxElementsInMemory限制时,
    Ehcache将会根据指定的策略去清理内存。可选策略有:LRU(最近最少使用,默认策略)、
    FIFO(先进先出)、LFU(最少访问次数)。-->

注解参数

//	使用哪个ehcache的name
    @AliasFor("cacheNames")
    String[] value() default {};
//   配置多个value
    @AliasFor("value")
    String[] cacheNames() default {};
// {非重要}设置value的key值  直接使用“#参数名”
    String key() default "";
//{非必要}指定key生成器   实现org.springframework.cache.interceptor.KeyGenerator接口
    String keyGenerator() default "";
// {非重要}指定使用哪个缓存管理器 
    String cacheManager() default "";
//{非重要}指定使用那个缓存解析器 通过org.springframework.cache.interceptor.CacheResolver接口
    String cacheResolver() default "";
//对参数做判断 
    String condition() default "";
// 不同于condition,对结果集做判断
    String unless() default "";
// 是否加锁
    boolean sync() default false;

1.@Cacheable

作用:在查询时,会先从缓存中获取,若不存在才再发起对数据库的访问。

2.@CacheEvict

作用:通常用在删除方法,用来从缓存中移除相应数据

3.@CachePut

作用:用于数据新增和修改操作上,用于更新缓存。

猜你喜欢

转载自blog.csdn.net/c_royi/article/details/83870426