本地缓存Caffeine的使用
2023-12-28 20:45:33
1 依赖
<dependency>
<groupId>com.github.ben-manes.caffeine</groupId>
<artifactId>caffeine</artifactId>
<version>2.9.2</version>
</dependency>
2 应用
2.1 创建缓存实例
下面是创建支持缓存自动过期的缓存实例。
/**
* 创建Caffeine缓存实例
*/
@Configuration
public class CaffeineConfig {
/**
* 通用Caffeine缓存的过期时间。单位:s.
*/
@Value("${expireTime.caffeineCacheOfCommon:5}")
private Integer expireTime4CaffeineCacheOfCommon;
@Bean("caffeineCacheOfCommon")
public Cache<String, Object> caffeineCacheOfCommon() {
return Caffeine.newBuilder()
// 设置创建缓存或者最后一次更新缓存后,经过固定时间后数据过期
.expireAfterWrite(expireTime4CaffeineCacheOfCommon, TimeUnit.SECONDS)
.build();
}
}
2.2 使用
@Resource
private TestDubboService testDubboService;
@Resource
private Cache<String, Object> caffeineCacheOfCommon;
public List<TestDto> queryDto(String province) {
if (StringUtils.isBlank(province)) {
return new ArrayList<>();
}
try {
List<TestDto> testList = (List<TestDto>) caffeineCacheOfCommon.getIfPresent(province);
if (testList != null) {
return testList;
}
testList = testDubboService.queryDtoByProvince(province);
if (testList == null) {
return new ArrayList<>();
}
caffeineCacheOfCommon.put(province, testList);
return testList;
} catch (Exception e) {
log.error("queryDto error.", e);
}
return new ArrayList<>();
}
3 参考文献
文章来源:https://blog.csdn.net/J_bean/article/details/135276604
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!