728x90
캐시 사용
- 서버의 부담을 줄이고 성능을 높이기 위해 사용되는 기술
- DB에서 조회하는 게 오래 걸리는 작업에 적용하여 해당 결과값을 저장해 두고 가져옴으로써 빠르게 처리가 가능해짐
- 동일한 결과값이 매번 자주 호출되는 작업에 적용하면 유리하다 -> 결과값이 매번 다른 작업에 적용한다면 캐시를 확인하는 작업으로 인한 부하가 생겨 성능이 오히려 떨어질 수 있으니 주의하여 사용한다
Spring Cache (@Cacheable) 간단 사용법
1. gradle 종속성 추가
implementation 'org.springframework.boot:spring-boot-starter-cache'
2. @EnableCaching 설정
캐시 기능을 사용할 애플리케이션에 @EnableCaching 어노테이션을 붙여준다
@SpringBootApplication
@EnableCaching // <-- 어노테이션 추가
public class FarmApplication {
public static void main(String[] args) {
SpringApplication.run(FarmApplication.class, args);
}
}
3. 캐시 저장하기 @Cacheable
해당 메서드에 캐시를 적용했으므로 캐시가 저장되어 있을 때는 메서드 안의 로직이 실행되지 않고 저장되어 있던 결과값만 호출된다.
-> 최초로 getTest() 메서드가 호출되면 sout 부분이 실행되고 리턴값을 주지만, 이후에 캐시가 삭제되기 전까지는 리턴값만 가져온다.
@GetMapping("/cacheTest")
@Cacheable(value = "cacheTest") // value, key 등으로 다양한 설정 가능
public ResponseEntity getTest() {
System.out.println("캐시가 저장되어있지 않을때만 이 메세지가 보입니다");
return new ResponseEntity("캐시 메세지가 호출되었나요 ?", HttpStatus.OK);
}
4. 저장된 캐시 삭제하기 @CacheEvict
해당 메서드가 호출되면 "cacheTest"라는 벨류값을 가진 캐시가 삭제된다.
-> clearCache() 메서드가 호출된 이후에 getTest() 메서드를 호출하면, sout 부분이 실행된다.
@GetMapping("/cacheClear")
@CacheEvict(value = "cacheTest")
public ResponseEntity clearCache() {
return new ResponseEntity<>("저장된 캐시를 삭제합니다", HttpStatus.OK);
}
결과 확인해 보기
- 최초 호출 시에는 저장된 캐시가 없으므로 메서드 안의 sout가 실행된다
- 이후에는 실제로 메서드를 실행하지 않고 캐시에 저장된 결과값만 리턴해준다
- 캐시를 삭제하는 메서드를 호출
- 다시 getTest() 메서드를 실행하면 메서드가 실제로 실행된다
728x90
'개발일지 > Spring' 카테고리의 다른 글
좋은 객체 지향 설계의 5가지 원칙 (SOLID) (0) | 2023.02.25 |
---|---|
Spring-boot Querydsl 사용해보기! (0) | 2023.01.23 |
Spring boot Jwt 토큰의 정보를 가져오는 방법 (0) | 2023.01.01 |
springboot 개발환경에 따른 application.yml 설정 (2) | 2022.11.28 |
인증서 발급 및 Spring boot에서 HTTPS 서버 구현 (0) | 2022.11.22 |