@Cacheable vs @CachePut vs @CacheEvict

심민혁·2025년 7월 20일

weeklypaper

목록 보기
18/18

Spring Cache에서 @Cacheable, @CachePut, @CacheEvict의 차이점과 각각을 어떤 상황에서 사용하는 것이 적절한지 설명해주세요.

Cache란 자주 사용할 것 같은 데이터를 메모리에 적재 시켜 필요시에 다시 데이터베이스에 접근하는 것이 아닌 메모리에서 바로 꺼내와 성능을 높일 수 있는 기술이다.

@Cacheable

  • 동작 방식: 메서드 실행 전에 캐시를 확인하고, 캐시에 데이터가 있으면 메서드를 실행하지 않고 캐시된 값을 반환합니다. 캐시에 없으면 메서드를 실행하고 결과를 캐시에 저장합니다.

  • 적절한 상황 :
    1. 조회 작업시에 성능 향상이 필요한 경우

    1. 데이터가 자주 변경되지 않는 경우
      예) 채널 목록 조회, 사용자 목록 조회

@CachePut

동작 방식: 메서드를 항상 실행하고, 그 결과를 캐시에 저장합니다. 캐시 확인 없이 무조건 메서드를 실행하므로 캐시 갱신에 사용됩니다.

  • 적절한 상황 :
    1. 데이터 생성이나 수정 후에 캐시를 최신 상태로 유지할 때
    예) 거의 모든 수정 작업

@CacheEvict

동작 방식: 캐시에서 데이터를 제거합니다. 특정 키 또는 전체 캐시를 비울 수 있습니다.

  • 적절한 상황:
    1. 데이터 삭제 시 관련 캐시 제거
    1. 데이터 무효화가 필요한 경우
    2. 데이터 수정이 많이 일어나 리셋이 필요한 경우
profile
열심히 하고 싶습니다

0개의 댓글