back-end/spring boot

spring boot 기본 캐시 사용

study-minjeong 2024. 7. 29. 15:53

✨캐싱

db에서 데이터를 가져오지 않고, 캐싱 해놓은 데이터를 가져와서 데이터를 가져오는 시간을 줄일 수 있다.

 

 

✨스프링 기본 캐시

스프링 부트 어플리케이션을 실행하면 해당 어플리케이션과 함께 살아있는 캐시 공간을 사용한다. 캐시 공간은 메모리를 차지하기 때문에 많은 데이터를 저장할 수 없다.

 

1. 종속성 추가하기

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

 

2. @EnableCaching 설정

@EnableCaching을 붙여주면 해당 어플리케이션의 캐싱 기능이 활성화되어 캐싱 기능을 이용할 수 있다.

@SpringBootApplication
@EnableCaching
public class TestApplication {
	public static void main(String[] args) {
		SpringApplication.run(TestApplication.class, args);
	}
}

 

3. @Cacheable 사용

@Cacheable 어노테이션은 처음에 캐시 데이터를 만들어주고, 그 다음부터는 DB에서가 아닌 캐시에서 데이터를 가져오도록 설정해주는 어노테이션이다. 데이터베이스가 변경되든, 변경되지 않든 저장된 캐시 데이터만 가져온다.

 

@Cacheable("test", key="#id")
public List<Test> getTestOne(int id) {
	return this.repository.findById(id);
}

기본으로 텍스트 값을 넣어줘야하는데 캐시 데이터 저장 공간의 이름이다. value(캐시 데이터의 이름), key(캐시 데이터의 키 값) 파라미터로 명시해줄 수도 있다.

 

4. @CachePut

@CachePut(value="test", key="#id")
public List<Test> updateTest(Request request) {
	// 수정
}

test에 저장된 값을 업데이트할 수 있다.

 

5. @CacheEvict

@CacheEvict(value="test", allEntries = true)
public List<Test> delete(int id) {
	// 삭제
}

test에 저장되어 있는 캐시 데이터를 모두 지울 수 있다.

allEntries = true를 사용하면 어떤 파라미터를 받더라도 모든 데이터를 지울 수 있다. 해당 id 값의 캐시만 지우고 싶다면 key="#id"를 사용하면 된다.