스프링부트 EhCache 2 사용 - 1

dragonappear·2022년 8월 16일
1

Cache

목록 보기
1/5

출처

제목: "[SpringBoot] 스프링부트에서 캐싱하기 (Cache in Springboot)"
작성자: tistory(ssyoni)
작성자 수정일: 2022년2월5일
링크: https://ssyoni.tistory.com/17
작성일: 2022년8월16일

제목: "스프링에서 캐시 사용하여 프로젝트 성능 개선해보기"
작성자: jiniaslog
작성자 수정일: 2021년12월24일
링크: https://www.jiniaslog.co.kr/article/view?articleId=254
작성일: 2022년8월16일

Cache

  • 데이터 변경이 자주 발생하지 않고 반복적으로 조회되는 데이터를 요청마다 DB에서 가져오는 것은 비효율적이다.
  • 이러한 데이터들을 캐싱하여 빠르게 전송해보자.

Local Cache

  • 서버 내부에 캐시를 저장한다.
  • 다른 서버의 캐시를 참조하기 어렵다.
  • 서버 내에서 작동하기 때문에 속도가 빠르다.
  • 로컬 서버 장비의 Resource를 이용한다. (Memory, Disk)

Global Cache

  • 여러 서버에서 캐시 서버에 접근하여 참조 할 수 있다.
  • 별도의 캐시 서버를 이용하기 때문에 서버 간 데이터 공유가 쉽다.
  • 네트워크 트래픽을 사용해야 해서 로컬 캐시보다는 느리다.
  • 데이터를 분산하여 저장 할 수 있다.

스프링 cache

  • 스프링은 AOP 기반으로 캐시가 작동하며 어노테이션으로 AOP 설정을 할 수 있어 간편하게 사용할 수 잇다.
  • 캐시는 저장할 내용과 속성 정보로 메소드의 리턴값과 파라미터를 사용하기 때문에 보통 메소드 단위로 설정하게 되며 클래스나 인터페이스 레벨에 캐시를 하는일은 드물다.

Caching annotation

  • @Cacheable: 캐시 저장
  • @Cacheput: 캐시 갱신
  • @CacheEvit: 캐시 삭제

기본적으로 캐싱 어노테이션은 AOP를 통해 동작한다.

주의사항

  • public method 에만 사용가능
  • 같은 객체 내의 method끼리 호출 시에는 @Cacheable이 설정되어있어도 캐싱되지 않는다.

스프링 부트에서 캐시 사용하기

의존성 추가

implementation 'org.springframework.boot:spring-boot-starter-cache'

@EnableCaching 선언

package me.dragonappear.replicationdatasource;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cache.annotation.EnableCaching;
import org.springframework.data.jpa.repository.config.EnableJpaRepositories;

@SpringBootApplication
@EnableCaching
public class ReplicationDatasourceApplication {

	public static void main(String[] args) {
		SpringApplication.run(ReplicationDatasourceApplication.class, args);
	}
}

0개의 댓글