Spring cache?

Rm·2021년 4월 3일
0

Spring을 공부하면 할 수록 정말 다양한 기능들을 제공한다는것을 깨닫게된다. 오늘은 Spring Cache에 대해 알아보고 현 프로젝트에 어떻게 적용할 수 있는지 포스팅해보겠다.

Cache?

  • Cache란 자주 사용하는 데이터나 값을 미리 복사해 놓는 임시 장소를 가리킨다. 아래와 같은 저장공간 계층 구조에서 확인할 수 있듯이, 캐시는 저장 공간이 작고 비용이 비싼 대신 빠른 성능을 제공한다.

Local Cache vs Global Cache

Local Cache

  • Local 장비 내에서만 사용되는 캐시로, Local 장비의 Resource를 이용한다.
  • Local에서만 작동하기 때문에 속도가 빠르다.
  • Local에서만 작동하기 때문에 다른 서버와 데이터 공유가 어렵다.

Global Cache

  • 여러 서버에서 Cache Server에 접근하여 사용하는 캐시로 분산된 서버에서 데이터를 저장하고 조회할 수 있다.
  • 네트워크 I/O가 발생하여 Local Cache에 비해 상대적으로 느리다.
  • 별도의 Cache서버를 이용하기 때문에 서버 간의 데이터 공유가 쉽다.

Spring Cache?

간단하게 이야기하면 db까지 콜이 가지 않도록 하는 것
사용자가 많은 서비스의 경우 몇만건의 select쿼리가 날릴경우 서버 입장에서 부담이 갈 수 밖에 없기때문에 이러한 문제를 해결하고자 spring cache를 사용하여 해결하고자 한다.

현재 프로젝트에서 아직 SessionStorage를 Redis로 지정하지 않았기때문에 ConcurrentHashMap을 활용하고자 한다.

spring boot cache starter를 추가해서 사용할 수 있다.

  • ConcurrentHashMap
  • caffeine

@EnableCache : 사용하고 싶은 프로젝트에 사용한다.
@Cacheable : 캐시하고 싶은 메서드에 추가한다.
@CacheEvict : 캐시를 제거하고자하는 메서드에 추가한다.

참고 문헌
https://mangkyu.tistory.com/69

profile
우당탕 개발자 성장기

0개의 댓글