guava cache小例子

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了guava cache小例子相关的知识,希望对你有一定的参考价值。

*/
@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小例子的主要内容,如果未能解决你的问题,请参考以下文章

python小例子小例子拾忆

spring的一个小例子--解析前面的小例子

JSP小例子——实现用户登录小例子(不涉及DB操作)

spring小例子-springMVC+mybits整合的小例子

IbLpJnJErT分页查询的小例子

layui.form小例子