EhCache是一个比较成熟的Java缓存框架,最早从hibernate发展而来, 是进程中的缓存系统,它提供了用内存,磁盘文件存储,以及分布式存储方式等多种灵活的cache管理方案,快速简单。
Springboot对ehcache的使用非常支持,所以在Springboot中只需做些配置就可使用,且使用方式也简易。
在你的项目上配置以下几步即可使用
首先,老规矩,pom.xml加依赖;
缓存支持启动器 orgspringframeworkbootgroupId
springbootstartercacheartifactId
dependency
坐标
netsfehcachegroupId
ehcacheartifactId
dependency
第二步,创建ehcache.xml配置文件
位置:classpath目录下,即src/main/resources/ehcache.xml
文件内容开发的时候可参考第一步导入的jar包,具体在哪呢,看下面:
再看代码:
ehcache xmlnsxsi xsinoNamespaceSchemaLocation diskStore path
defaultCacheechcache的默认缓存策略
defaultCache
maxElementsInMemory
eternal
timeToIdleSeconds
timeToLiveSeconds
maxElementsOnDisk
diskExpiryThreadIntervalSeconds
memoryStoreEvictionPolicy
persistence strategy
defaultCache
cache name
maxElementsInMemory
eternal
timeToIdleSeconds
timeToLiveSeconds
maxElementsOnDisk
diskExpiryThreadIntervalSeconds
memoryStoreEvictionPolicy
persistence strategy
cache
ehcache
说明:
diskStore path这个是磁盘存储路径,当内存缓存满了的时候,就会往这里面放,javaiotmdir是操作系统缓存的临时目录,不同操作系统缓存目录不一样。
maxElementsInMemory 内存缓存中最多可以存放的元素数量,若放入Cache中的元素超过这个数值,则有以下两种情况 若overflowToDisktrue,则会将Cache中多出的元素放入磁盘文件中
若overflowToDiskfalse,则根据memoryStoreEvictionPolicy策略替换Cache中原有的元素
overflowToDisk 内存不足时,是否启用磁盘缓存
eternal 缓存中对象是否永久有效
timeToIdleSeconds 缓存数据在失效前的允许闲置时间单位秒,仅当eternal时使用默认值是表示可闲置时间无穷大若超过这个时间没有访问此中的某个元素那么此元素将被从中清除
timeToLiveSeconds 缓存数据的总的存活时间(单位:秒),仅当eternal时使用,从创建开始计时,失效结束。
maxElementsOnDisk 磁盘缓存中最多可以存放的元素数量表示无穷大
diskExpiryThreadIntervalSeconds 磁盘缓存的清理线程运行间隔,默认是120秒
ehcache xmlnsxsi xsinoNamespaceSchemaLocation diskStore path
defaultCacheechcache的默认缓存策略
defaultCache
maxElementsInMemory
eternal
timeToIdleSeconds
timeToLiveSeconds
maxElementsOnDisk
diskExpiryThreadIntervalSeconds
memoryStoreEvictionPolicy
persistence strategy
defaultCache
cache name
maxElementsInMemory
eternal
timeToIdleSeconds
timeToLiveSeconds
maxElementsOnDisk
diskExpiryThreadIntervalSeconds
memoryStoreEvictionPolicy
persistence strategy
cache
ehcache
0
ehcache xmlnsxsi xsinoNamespaceSchemaLocation diskStore path
defaultCacheechcache的默认缓存策略
defaultCache
maxElementsInMemory
eternal
timeToIdleSeconds
timeToLiveSeconds
maxElementsOnDisk
diskExpiryThreadIntervalSeconds
memoryStoreEvictionPolicy
persistence strategy
defaultCache
cache name
maxElementsInMemory
eternal
timeToIdleSeconds
timeToLiveSeconds
maxElementsOnDisk
diskExpiryThreadIntervalSeconds
memoryStoreEvictionPolicy
persistence strategy
cache
ehcache
1
第三步结束,ehcache在Springboot中就配置完成了,下面就是怎么在Springboot中使用
第四步,在启动类前加上@EnableCaching注解;这样的话,启动类启动时会去启动缓存启动器。
ehcache xmlnsxsi xsinoNamespaceSchemaLocation diskStore path
defaultCacheechcache的默认缓存策略
defaultCache
maxElementsInMemory
eternal
timeToIdleSeconds
timeToLiveSeconds
maxElementsOnDisk
diskExpiryThreadIntervalSeconds
memoryStoreEvictionPolicy
persistence strategy
defaultCache
cache name
maxElementsInMemory
eternal
timeToIdleSeconds
timeToLiveSeconds
maxElementsOnDisk
diskExpiryThreadIntervalSeconds
memoryStoreEvictionPolicy
persistence strategy
cache
ehcache
2
第五步,实体类实现可序列化接口Serializable;由于需要实体类支持缓存中的磁盘存储,所以需要实体类实现可序列化接口
ehcache xmlnsxsi xsinoNamespaceSchemaLocation diskStore path
defaultCacheechcache的默认缓存策略
defaultCache
maxElementsInMemory
eternal
timeToIdleSeconds
timeToLiveSeconds
maxElementsOnDisk
diskExpiryThreadIntervalSeconds
memoryStoreEvictionPolicy
persistence strategy
defaultCache
cache name
maxElementsInMemory
eternal
timeToIdleSeconds
timeToLiveSeconds
maxElementsOnDisk
diskExpiryThreadIntervalSeconds
memoryStoreEvictionPolicy
persistence strategy
cache
ehcache
3
第六步,使用@Cacheable把数据存进缓存,下面就是专门把方法返回值存入缓存
ehcache xmlnsxsi xsinoNamespaceSchemaLocation diskStore path
defaultCacheechcache的默认缓存策略
defaultCache
maxElementsInMemory
eternal
timeToIdleSeconds
timeToLiveSeconds
maxElementsOnDisk
diskExpiryThreadIntervalSeconds
memoryStoreEvictionPolicy
persistence strategy
defaultCache
cache name
maxElementsInMemory
eternal
timeToIdleSeconds
timeToLiveSeconds
maxElementsOnDisk
diskExpiryThreadIntervalSeconds
memoryStoreEvictionPolicy
persistence strategy
cache
ehcache
4
说明: @Cacheable可以标记在一个方法上,也可以标记在一个类上,当标记在一个方法上时表示该方法是支持缓存的,当标记在一个类上时则表示该类所有的方法都是支持缓存的。对于一个支持缓存的方法,Spring会在其被调用后将其返回值缓存起来,以保证下次利用同样的参数来执行该方法时可以直接从缓存中获取结果,而不需要再次执行该方法。Spring在缓存方法的返回值时是以键值对进行缓存的,值就是方法的返回结果。
@Cacheable可以指定三个属性,value、key和condition。
value属性指定cache的名称(即选择ehcache.xml中哪种缓存方式存储)
key属性是用来指定Spring缓存方法的返回结果时对应的key的。该属性支持SpringEL表达式。当我们没有指定该属性时,Spring将使用默认策略生成key。我们也直接使用“#参数名”或者“#p参数index”。下面是几个使用参数作为key的示例
ehcache xmlnsxsi xsinoNamespaceSchemaLocation diskStore path
defaultCacheechcache的默认缓存策略
defaultCache
maxElementsInMemory
eternal
timeToIdleSeconds
timeToLiveSeconds
maxElementsOnDisk
diskExpiryThreadIntervalSeconds
memoryStoreEvictionPolicy
persistence strategy
defaultCache
cache name
maxElementsInMemory
eternal
timeToIdleSeconds
timeToLiveSeconds
maxElementsOnDisk
diskExpiryThreadIntervalSeconds
memoryStoreEvictionPolicy
persistence strategy
cache
ehcache
5
最后,使用@CacheEvict清除缓存;
ehcache xmlnsxsi xsinoNamespaceSchemaLocation diskStore path
defaultCacheechcache的默认缓存策略
defaultCache
maxElementsInMemory
eternal
timeToIdleSeconds
timeToLiveSeconds
maxElementsOnDisk
diskExpiryThreadIntervalSeconds
memoryStoreEvictionPolicy
persistence strategy
defaultCache
cache name
maxElementsInMemory
eternal
timeToIdleSeconds
timeToLiveSeconds
maxElementsOnDisk
diskExpiryThreadIntervalSeconds
memoryStoreEvictionPolicy
persistence strategy
cache
ehcache
6
说明:@CacheEvict是用来标注在需要清除缓存元素的方法或类上的。当标记在一个类上时表示其中所有的方法的执行都会触发缓存的清除操作。@CacheEvict可以指定的属性有value、key、condition、allEntries和beforeInvocation。
其中value、key和condition的语义与@Cacheable对应的属性类似;allEntries是boolean类型,表示是否需要清除缓存中的所有元素。默认为false,表示不需要。
当指定了allEntries为true时,Spring Cache将忽略指定的key。有的时候我们需要Cache一下清除所有的元素,这比一个一个清除元素更有效率。
ehcache xmlnsxsi xsinoNamespaceSchemaLocation diskStore path
defaultCacheechcache的默认缓存策略
defaultCache
maxElementsInMemory
eternal
timeToIdleSeconds
timeToLiveSeconds
maxElementsOnDisk
diskExpiryThreadIntervalSeconds
memoryStoreEvictionPolicy
persistence strategy
defaultCache
cache name
maxElementsInMemory
eternal
timeToIdleSeconds
timeToLiveSeconds
maxElementsOnDisk
diskExpiryThreadIntervalSeconds
memoryStoreEvictionPolicy
persistence strategy
cache
ehcache
7
还没有评论,来说两句吧...