业务场景中常常需要使用数据库中的数据,但多次调用数据库会对性能产生影响,存入REDIS或者其他中间件面临过期后如何初始化或者新数据如何加载等问题,特定场景下可以使用@Cacheable。
先上依赖(以下使用的springboot版本较老,而且项目使用的是gradle,需要新版本依赖或者MAVEN的直接去https://mvnrepository.com拉就行)
compile( org.ehcache:ehcache:3.3.1 )
compile("org.springframework.boot:spring-boot-starter-cache")
在启动类加上@EnableCaching注解
创建一个xml文件取名ehcache3.xml,添加一下内容
<?xml version="1.0" encoding="UTF-8"?>
<config
xmlns:xsi= http://www.w3.org/2001/XMLSchema-instance
xmlns= http://www.ehcache.org/v3
xsi:schemaLocation="http://www.ehcache.org/v3 http://www.ehcache.org/schema/ehcache-core-3.0.xsd">
<cache-template name="resources">
<expiry>
<ttl unit="minutes">5</ttl>
</expiry>
<heap unit="entries">10000</heap>
</cache-template>
<cache alias="test" uses-template="resources"/>
</config>
cache-template是模板,里面可以设置过期时间等其他参数,需要的自行查阅。
cache是具体的使用了,alias对应类里面的名字。
以下是具体的类
@Cacheable(cacheNames = "test", key = " testTry ",unless = "#result==null")
public Map<String, Integer> getData()
{
Map<String, Integer> map = new HashMap<>();
//数据库或其他逻辑
Log.info("我进入方法啦!!!!!")
return map;
}
cacheNames对应xml文件的alias,key暂时不知道啥用有待研究,方法里面就是具体逻辑了,可以打日志,看过期时间内多次调用是不是只打一行日志就知道有没有走内存了。
© 版权声明
文章版权归作者所有,未经允许请勿转载。
相关文章
暂无评论...