목차
1. Spring Cache 주요 어노테이션
- @Cacheable
- 캐시가 없을 경우 메서드를 실행하고 그 결과를 캐시에 저장
- 캐시가 있으면 메서드를 실행하지 않고 캐시의 데이터 반환
- @CachePut
- 캐시를 조회하지 않고 항상 메서드를 실행하여 메서드 결과로 캐시 업데이트
- @CacheEvict
- 특정 키를 가진 캐시 데이터 제거
2. @Cacheable
목적
- 데이터 조회 및 저장
- 데이터 조회 시, 반복적으로 DB에 접근하는 것을 피하고 캐시를 활용하여 성능 향상
동작 방식
- 메서드가 호출되면 key에 해당하는 캐시가 있는지 확인
- 캐시 데이터 O: DB 접근 없이 캐시 데이터 즉시 반환
- 캐시 데이터 X: 메서드를 실행 → 반환된 결과를 key와 함께 캐시에 저장 → 반환
사용 시점
- 자주 변경되지 않는 데이터 조회
- 메뉴, 카테고리 등 자주 변경되지 않는 정적 데이터 조회 시 유용
- 성능 향상
- DB 조회 빈도가 높은 경우, 캐시를 활용하여 성능 개선 가능
3. @CachePut
목적
- 캐시 업데이트
- 데이터가 변경되었을 때 캐시를 무조건 업데이트하여 최신 상태 유지
- @Cacheable과 함께 사용되어 조회와 업데이트를 동시에 처리할 때 유용
동작 방식
- 항상 메서드 실행 + DB 조회
- 메서드 실행 후 반환된 값으로 해당 key의 캐시 값 업데이트
사용 시점
- 데이터 업데이트
- 데이터가 변경될 때마다 캐시된 값도 최신 데이터로 갱신해야 하는 경우 사용
- @Cacheable과 함께 사용 시 @CachePut이 실행되면 캐시에 새로운 데이터가 존재하게 되어 다음 @Cacheable 호출 시 DB 조회 X
4. @CacheEvict
목적
- 캐시 삭제
- 특정 데이터가 삭제되거나 변경되었을 때, 캐시에서 해당 데이터를 즉시 제거하여 다음 요청 시 DB에서 데이터를 다시 가져오도록 강제
동작 방식
- 지정된 key에 해당하는 캐시 항목 삭제
- beforeInvocation 속성을 사용하여 호출 전에 캐시를 비울지, 메서드 실행 후에 비울지 제어 가능
- allEntries = true 옵션을 사용하여 해당 캐시의 모든 데이터 삭제 가능
- 캐시가 비워진 후 같은 데이터를 요청하면 Cacheable 동작을 통해 다시 DB에서 가져와 캐시를 채움
사용 시점
- 데이터 삭제 또는 변경 후 캐시 무효화
- 데이터가 삭제되거나 변경될 때, 관련된 캐시를 무효화하여 다음 조회 시 신규 데이터를 가져오도록 함
728x90
'Backend Development > SPRING' 카테고리의 다른 글
| Spring Boot에서 웹소켓 연결 시 Authentication 객체를 읽는 방법(JWT 기준) (0) | 2025.11.29 |
|---|---|
| AOP에서 자기 호출(self invocation) 문제와 해결법 (1) | 2025.10.24 |
| [Spring] 비동기 환경에서 컨텍스트 정보 전달 방법 (0) | 2025.10.20 |
| [Spring Security] 인증/인가 프로세스 (0) | 2025.09.29 |
| [Spring Security] 기본 사용법 (0) | 2025.09.29 |