LoadingCache簡單實例,使用google緩存機制緩存每天數據庫第一條數據並保存

使用LoadingCache緩存每天數據庫第一條數據並保存

 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();
      // 在本地沒有緩存的時候會調用該方法進行加載,將獲取的值進行緩存並返回結果
      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));

在這裏取出當天的數據key,因爲每天date都不一樣,所以會獲取當天的第一條數據,並緩存起來!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章