码迷,mamicode.com
首页 > 系统相关 > 详细

guava cache小例子

时间:2017-10-29 13:55:45      阅读:194      评论:0      收藏:0      [点我收藏+]

标签:error   imu   null   UI   build   getc   log   ror   osi   

*/
@Service
public class AppServiceImpl extends BaseServiceImpl<App> implements AppService {

private Logger logger = LoggerFactory.getLogger(getClass());

@Resource
private AppMapper mapper;

private LoadingCache<String, App> apps = CacheBuilder.newBuilder()
//设置缓存个数
.maximumSize(1000)
//expireAfterWrite是在指定项在一定时间内没有创建/覆盖时,会移除该key,下次取的时候从loading中取
//expireAfterAccess是指定项在一定时间内没有读写,会移除该key,下次取的时候从loading中取
//refreshAfterWrite是在指定时间内没有被创建/覆盖,则指定时间过后,再次访问时,会去刷新该缓存,在新值没有到来之前,始终返回旧值跟expire的区别是,指定时间过后,expire是remove该key,下次访问是同步去获取返回新值;而refresh则是指定时间后,不会remove该key,下次访问会触发刷新,新值没有回来时返回旧值
.expireAfterWrite(3, TimeUnit.MINUTES)
.build(new CacheLoader<String, App>() {
@Override
public App load(String key) throws Exception {
App condition = new App();
condition.setCode(key);
App app = mapper.queryOne(condition);
logger.info("load app. {} {}", key, app != null ? app.getUpdatedTime() : null);
return app;
}
});

@Override
protected BaseRepository<App> getMapper() {
return mapper;
}

@Override
public App queryByCode(String code) {
try {
return apps.get(code);
} catch (ExecutionException e) {
logger.error("load app error. {}", e);
return null;
}
}

@Override
public void refresh(String code) {
apps.refresh(code);
}
}

guava cache小例子

标签:error   imu   null   UI   build   getc   log   ror   osi   

原文地址:http://www.cnblogs.com/nzhbk/p/7749712.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!