캐시/ 예외처리
Local Cache:
서버 내부에 캐시를 저장함.
다른 서버의 캐시 참조 어려움
속도 빠름
서버의 메모리/디스크를 사용함
Global Cache:
여러 서버에서 캐시 서버에 접근.
네트워크 트래픽이므로 캐시보단 느림
모놀리틱 아키텍쳐: 하나에다 박는것
스프링에서 캐시 :
--> 반복적으로 결과물 반환할때는 캐시처리가 좋음!
캐시 쓸땐 클래스 앞에
@EnableCaching 선언
ex)
@EnableCaching
@Configuration
public class CacheConfig(){
@Bean
public CacheManager cacheManager(){
SimpleCacheManager simpleCacheManager = new SimpleCacheManager();
simpleCacheManager.setCaches(List.of(new ConcurrentMapCache("캐시이름")));
return simpleCacheManager;
}
}
1. SimpleCacheManager : 구현체인 캐시가 없는 깡통 매니저.
setCaches 함수를 통해 구현체를 넘겨서 사용 가능함.
2.ConcurrentMapCacheManager : Map타입으로 빠르지만 용량제한 및 다양한 기능 없어서 테스트용도임
3.EhCacheCacheMangager : 자바에서 가장 인기있는 캐시 프레임워크인 EhCache 지원하는 캐시 매니저임.
-- EhCacheManager 사용법:
1) 캐시 매니저 등록 : 구글에 CacheConfig 검색하기
2) 캐시 적용방법:
@Cacheable(value = "layoutRecentArticleCaching", key = "#lastArticleId")
public List<Article> getRecentArticles(Long lastArticleId) {
....중략...
}
이런식으로 위에 @Cacheable을 달면 됨.
value : 해당 반환값 저장하는 캐시 저장소의 이름임.
key : 캐시는 MAP 구조로 저장됨. 따라서 저장할 키 값을 지정하고 반환값은 밸류값임.
condition : 파라미터 값이 특정 조건일 경우만 캐시 적용할 경우 사용하면 됨.
3) 캐시 해제 방법
캐시는 적절하게 제거되어야 하기 때문에
@CacheEvict 에노테이션이 제공됨.
@CacheEvict(value = {"layoutCaching", "layoutRecentArticleCaching","seoCaching"}, allEntries = true)
public void editArticle(Long articleId, ArticleForm articleForm) {
...중략...
}
왜 사용?? : 데이터의 정합성을 유지할 수 있음.
value 에 있는 배열의 모든 데이터를 초기화 한다는 뜻임.
'TIL' 카테고리의 다른 글
220816 자바에서의 문자열 (0) | 2022.08.16 |
---|---|
220812 자바객체복사. JoinTable. findById 의 작동원리 등 (0) | 2022.08.12 |
220811 (0) | 2022.08.11 |
220810 TIL (0) | 2022.08.10 |
220808 // Kafka란? (0) | 2022.08.08 |