나중에 올 요청의 결과를 미리 저장해두었다가 빠르게 제공해주는 서비스
자주 사용하는 데이터를 미리 보관해둔 임시 장소
📌 Memory
비교적 저장 공간이 적고 전체적인 비용이 비싸다. 대신 빠른 IO를 통해 성능적으로 이점이 있다.
📌 일반적으로 아래 특징을 가진 데이터를 캐싱하면 좋다.
- 도중에 변경될 일이 없는 데이터베이스 조회 값
- 자주 호출되는 데이터
Look Aside
일반적으로 많이 쓰는 패턴
읽기에서 캐싱에 데이터가 있는지 확인 후 없으면 DB에 요청
Write Back
쓰기에서 캐시에 저장을 먼저한다.
Insert 쿼리를 500번 날리는 것보다 Insert 쿼리 하나로 500개를 처리하는 것이 훨씬 빠르다. (배치 작업)
단점 :
📌 참고
스프링부트에서 사용하는 캐시는 대부분 JSR-107을 따른다. JSR-107을 따르는 캐시를 사용하면 어떤 구현체 캐시를 사용하는지에 관계없이 추상화를 지원한다.
✅ JSR (Java Specification Requests)
자바 플랫폼에 대한 규격을 제안하거나 기술한 것을 의미한다.
JSR-107은 JCACHE (Java Temporary Caching API)에 관한 내용이다.
○ 로컬캐시
○ 글로벌캐시