EHCACHE
1:ehcache.xml
<?xml version="1.0" encoding="UTF-8"?>
<ehcache>
<diskStore path="java.io.tmpdir"/>
<defaultCache
maxElementsInMemory="10000"
eternal="false"
overflowToDisk="true"
timeToIdleSeconds="10"
timeToLiveSeconds="20"
diskPersistent="false"
diskExpiryThreadIntervalSeconds="120"/>
<cache name="cacheTest" 缓存名称
maxElementsInMemory="1000" 缓存的最大个数
eternal="false" 是否永久有效,一但设置了,timeout将不起作用。
overflowToDisk="true" 当数量达到maxElementsInMemory,Ehcache将会对象写到磁盘中。
maxElementsOnDisk="500"硬盘最大缓存个数。
timeToIdleSeconds="10" 缓存自创建日期起至失效时的间隔时间
timeToLiveSeconds="20"
diskPersistent="false"
memoryStoreEvictionPolicy="FIFO"
diskExpiryThreadIntervalSeconds="120"/> 缓存创建以后,最后一次访问缓存的日期至失效之时的时间间隔;
</ehcache>
如果仅有 timeToLiveSeconds
那么 自创建时间开始 间隔20后缓存失效;
如果没有timeToLiveSeconds 那么自最后一次访问缓存 间隔y后 缓存失效;
如果两个都存在,失效期是20,如果10内没访问,就失效,如果访问N次,每次都会加上10,但是最长不超过20.
diskExpiryThreadIntervalSeconds:磁盘失效线程运行时间间隔,默认是120秒。
memoryStoreEvictionPolicy:当达到maxElementsInMemory限制时,Ehcache将会根据指定的策略去清理内存。默认策略是LRU(最近最少使用)。你可以设置为FIFO(先进先出)或是LFU(较少使用)。
使用@Cacheable(value=”cache”,key=”#root.methodName”)在方法上注解,key在一个value中必须要保证唯一,不然指定找不到哪一个缓存。
比如Spring mvc的Impl实现类的实现方法
@CacheEvict(value=”accountCache”,key=”#account.getName()”)// 清空accountCache 缓存
@CacheEvict(value=”accountCache”,allEntries=true)// 清空accountCache 缓存
@CachePut(value=”accountCache”,key=”#account.getName()”)// 更新accountCache 缓存