Spring Cache에서 @Cacheable, @CachePut, @CacheEvict의 차이점과 각각을 어떤 상황에서 사용하는 것이 적절한지 설명해주세요.
Cache란 자주 사용할 것 같은 데이터를 메모리에 적재 시켜 필요시에 다시 데이터베이스에 접근하는 것이 아닌 메모리에서 바로 꺼내와 성능을 높일 수 있는 기술이다.
동작 방식: 메서드 실행 전에 캐시를 확인하고, 캐시에 데이터가 있으면 메서드를 실행하지 않고 캐시된 값을 반환합니다. 캐시에 없으면 메서드를 실행하고 결과를 캐시에 저장합니다.
적절한 상황 :
1. 조회 작업시에 성능 향상이 필요한 경우
동작 방식: 메서드를 항상 실행하고, 그 결과를 캐시에 저장합니다. 캐시 확인 없이 무조건 메서드를 실행하므로 캐시 갱신에 사용됩니다.
동작 방식: 캐시에서 데이터를 제거합니다. 특정 키 또는 전체 캐시를 비울 수 있습니다.