SpringBoot
Springboot Cache 사용기[5] Redis 이용한 Cache 사용
Springboot Cache 사용기[5] Redis 이용한 Cache 사용
2022.04.16이전 포스팅에서 Redis의 사용 방법을 알아봤습니다. 이번에는 Redis로 Cache를 사용해보겠습니다. Local Memory Cache는 Memory가 초기화된다면 데이터가 다 삭제되지만, Redis는 expires를 설정하거나 직접 삭제하지 않는 이상 데이터는 삭제되지 않습니다. 따라서 스냅숏 같이 개발자의 원하는 시점의 데이터를 불러와 Cache로 저장할 수 있습니다. 1. Redis CacheManager SimpleCacheManager를 사용하지 않고, Redis의 CacheManager를 정의하여 사용합니다. @Bean public CacheManager redisCacheManager(){ RedisCacheConfiguration redisCacheConfiguration = Redi..
Springboot Cache 사용기[4] Redis 사용하기
Springboot Cache 사용기[4] Redis 사용하기
2022.04.10Redis Cache를 사용하기 위해선 먼저 Redis를 사용할 줄 알아야 합니다. 그래서 하나씩 만들어보겠습니다. Redis는 Nosql DB입니다. 영속성을 지원하며, In memory DB이므로 속도가 빠른 장점으로 Cache서버의 DB로서 많이 사용됩니다. 1. 디펜던시 추가 implementation 'org.springframework.boot:spring-boot-starter-data-redis' build.gradle에 위의 디펜더 시를 추가해줍니다. 2. RedisConfig @Configuration @RequiredArgsConstructor @EnableRedisRepositories public class RedisConfig { private final RedisProperti..
Springboot Cache사용기[3] Local-Memory-Cache 동작 과정
Springboot Cache사용기[3] Local-Memory-Cache 동작 과정
2022.04.02이전 포스팅에서 SimpleCacheManager를 이용해서 Cache가 동작하는 것을 구현해봤습니다. 그렇다면 이런 CacheManager가 동작되는데 어떠한 과정이 있는지 살펴보기 위해선 먼저 Proxy를 알아야 합니다. 1. Proxy란? Proxy란 대리자라는 의미를 가지고 있습니다. 예를 들어서 나는 운전면허가 있어서 운전을 할 수 있지만, 누군가에게 대신 운전을 시킬수도 있습니다. 여기서 대신 운전을 해주는 사람이 대리자이며, 영어로 Proxy라고 합니다. 개발자는 10개의 객체에 동일한 기능을 가진 프록시를 적용하려 한다면, 각각의 객체에 대한 부가 기능을 가진 프록시를 모두 정의했어야 했습니다 . 하지만 JDK 동적 프록시와 CGLIB를 이용하면 같은 부가 기능 로직을 한 번만 정의하면 모..
Springboot Cache 사용기[2] Local-Memory-Cache
Springboot Cache 사용기[2] Local-Memory-Cache
2022.03.30앞 시간에서 Cache란 무엇이고, Springboot에서 어떠한 Cache가 있는지 알아봤습니다. 이번에는 Local-Memory-Cache를 사용하는 방법에 대해서 알아보겠습니다. Local-Memory-Cache 1. Local Memory에 Cache 데이터를 저장하고, 조회한다. 2. 서버가 꺼지면 Cache 데이터들은 삭제된다. 3. 기본 전략으로 @EnableCache만 붙여주거나, 간단하게 Custom CacheManager를 등록해서 사용 가능하다. 1. 프로젝트 세팅 Cache의 사용법을 알아보는 포스팅입니다. 밑에 진행하는 예제가 Cache로 사용하기 적합하지 않은 데이터일 수 있습니다. [디펜더 시 추가] dependencies { implementation 'org.springfr..
Springboot Cache 사용기[1]
Springboot Cache 사용기[1]
2022.03.30Cache에 대해서 먼저 알아보자. Cache는 작은 저장공간을 가지지만 빠른 액세스 속도를 특징으로 가지고 있습니다. 따라서 자주 사용되는 데이터를 임시 저장소에 저장해 빠른 응답 속도를 위해서 사용됩니다. [그럼 어떠한 데이터에 Cache를 사용하면 좋을까?] 1. 반복적인 결과를 돌려주는 데이터(웹툰은 원고를 수정을 하지 않는 이상 같은 데이터를 반환한다.) 2. 조회하는데 많은 비용이 드는 데이터 [Local Cache와 Global Cache] Local Cache의 특징 1. 서버마다 Cache를 두는 것 2. 서버마다 작동하므로 동작이 빠르다. 3. 다른 서버와의 동기화에 어려움이 있을 수 있다. Global Cache의 특징 1. Cache 서버를 별도로 존재하고, 분산된 서버에서 데이터를..
Spring-Data-JPA [5] Fetch Join
Spring-Data-JPA [5] Fetch Join
2022.03.24JPA를 사용하며, Fetch Join에 대한 이야기를 많이 들어봤습니다. 이번엔 FetchJoin에 대해서 알아보겠습니다. 1. Fetch Join이란? Fetch Join은 JPQL에서 성능 최적화를 위해서 사용하는 기능입니다. 이것은 SQL의 조인 종류가 아닙니다. (SQL 조인에는 Inner Join, Outer Join(left, right, full)이 있습니다.) 어떤 상황에 성능 최적화를 진행하는가?? -> JPA에는 엔티티에 관계를 맵핑할 때 지연 로딩과 즉시 로딩 설정을 할 수 있습니다. 즉시 로딩 -> 어떠한 엔티티가 조회되었을 때 연관된 엔티티도 모두 함께 조회 지연 로딩 -> 어떠한 엔티티가 조회되었을 때 연관된 엔티티는 Proxy로 들어가게 되고, 실제로 사용될 때 DB에서 조회..