Web

캐시(cache) 웹 어플리케이션 캐시 적용

E재HO 2023. 1. 12. 09:04

캐시는 "데이터나 값을 미리 복사해 놓는 임시 장소" 이다.

  • 자주 사용되는 데이터나 계산하는데 시간이 오래걸리는 데이터를 미리 계산한 후 캐시 저장소에 저장해두고, DB에 다시 접근하지 않거나 새로운 계산이 일어나지 않도록 해서, 실행시간을 줄이기 위해서 사용.
  • DB뿐만 아니라 HTTP네트워크, 컴퓨터 메모리(캐시메모리)와 같이 다양한 곳에서 사용되는 개념이다.

캐시를 만들면 DB에 최초 접근 이후에는 한번 읽은 데이터는, 요청이 들어오면 DB가 아닌 Cache로 가서 데이터를 바로 받아 오는 방식으로 동작한다.

  • 이로 인해서 서버간 불필요한 트래픽이 줄어들고, 서버 부하도 감소하며, 처리시간이 빨라지기때문에 고객들에게 더 빠른 서비스를 제공하는 것이 가능.

Redis

캐시 솔루션으로 Redis를 사용.

레디스(Redis)는 고성능 key-value 저장소로서 리스트, 해시, 셋 정렬된 셋 등 여러 형식의 자료구조를 지원하는 *NoSQL.

메모리에 상주하면서 RDBMS의 캐시 솔루션으로서 주로 사용되며 라인, 삼성전자, 네이버, 인스타그램 등 여러 IT 기업에서 사용하는 검증된 오픈소스 솔루션.

Redis 사용법

의존성 라이브러리 추가 (Maven기준) - pom.xml에 추가

<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>

Redis 서버설정 - application.yml or application.properties 파일에 추가

spring.cache.type=redis
spring.redis.host=localhost
spring.redis.port=6379

SpringBoot에 캐시사용하겠다고 알려주기 - Springboot Main Application Class에 @EnableCaching 어노테이션 추가

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

사용할 서비스 메서드에 어노테이션 달아주기

주요 어노테이션
@Cacheable @CachePut -> 캐시등록
@Cacheble은 캐시가 있으면 캐시의 정보를 가져오고, 없으면 등록한다.
@CacehPut은 무조건 캐시에 저장한다.
@CacheEvict -> 캐시삭제

1학기 최종 프로젝트에서 아파트 거래목록 가져오는 메서드에 적용해봣는데, 속도가 많이 개선되었다.

//https://github.com/microsoftarchive/redis/releases/tag/win-3.2.100
설치경로


NoSQL: Not Only SQL