캐시를 사용하여 데이터베이스 조회 빈도를 낮추다

업무를 쓸 때 다른 실체 클래스와 관련된 다음에 이 실체 클래스의 관련 속성을 가져와야 하는 경우.만약에 외부 대상을 두루 돌아다닐 때 이 대상, 즉 순환 플러그인 조회를 조회해야 한다면 이 대상에 대해 이 필드를 수정할 가능성이 적고 이 조회가 빈번한 상황에서 캐시에 의존하여 데이터베이스의 부담을 낮추는 것을 고려해야 한다.예를 들어 나는 광고 위치를 순환적으로 처리하고 있다.
// AdLocation mediaId , media ID
for (AdLocation adLocation : adLocationList) {
    // TODO  
    //  media 
    Media media = mediaMapper.get(adLocation.getMediaId());
}

그러나 이렇게 처리하는 것은 데이터베이스에 대한 부담이 크고 이런 값의 변화 가능성이 낮다.우리는 캐시를 채택할 수 있다.우리는 아래와 같이 수정했다.
//  id media ,  media 
//  com.google.common.cache Jar , , map , key - value。
// refreshAfterWrite  ,maxiumsize map 。
    private LoadingCache<Long, Media> mediaCache = CacheBuilder.newBuilder().maximumSize(10000)
            .refreshAfterWrite(20, TimeUnit.MINUTES).build(new CacheLoader<Long, Media>() {

                @Override
                public Media load(Long key) throws Exception {
                    return mediaMapper.selectByPrimaryKey(key);
                }

            });

이제 캐시를 사용할 수 있습니다.
for(AdLocation adLocation : adLocationList) {
//    。
    Media media = mediaCahe.get(adLocation.getMediaId());
}

좋은 웹페이지 즐겨찾기