使用LoadingCache緩存每天數(shù)據(jù)庫第一條數(shù)據(jù)并保存
private LoadingCache<String, Integer> minId = CacheBuilder.newBuilder().expireAfterWrite(1L, TimeUnit.DAYS).build(new CacheLoader<String, Integer>() {
@Override
public Integer load(String mixdate) throws Exception {
Date date = LocalDate.parse(StringUtils.substringAfter(s, "@")).toDate();
// 在本地沒有緩存的時候會調(diào)用該方法進行加載舵匾,將獲取的值進行緩存并返回結果
if (ACTIVE_COUNTER.startsWith(mixdate)) {
LoginLog loginLog = loginLogRepository.getTopByLoginTimeBeforeOrderByIdDesc(date);
if (loginLog != null) {
return loginLog.getId();
}
} else if (PLAYED_COUNTER.startsWith(mixdate)) {
ViewHistory viewHistory = viewHistoryRepository.getTopByViewtimeBeforeOrderByIdDesc(date);
if (viewHistory != null) {
return viewHistory.getId();
}
} else if (ADCLICK_COUNTER.startsWith(mixdate)) {
AdvClickHistory advClickHistory = advClickHistoryRepository.getTopByCreateTimeBeforeOrderByIdDesc(date);
if (advClickHistory != null) {
return advClickHistory.getId();
}
}
return 0;
}
});
minId.getUnchecked(StringUtils.join(type, "@", date));
在這里取出當天的數(shù)據(jù)key蹋辅,因為每天date都不一樣褒傅,所以會獲取當天的第一條數(shù)據(jù)剧蚣,并緩存起來旋廷!