ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Redis 5 - Spring Boot와 Redis의 연결
    Redis 2021. 4. 6. 20:12

    본 포스팅은 Redis에 대해 알아보고, Spring Boot 프로젝트에 적용해 활용해보는 목적으로 작성되었습니다.

    환경
    Spring Boot, Maven, Redis


    Spring Boot pom.xml 의존성 주입 ( Maven )

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

    Application.yml or Applcation.properties 설정

    **yml**
    spring:
        cache:
        type: redis
      profiles:
        active: local
      redis:
        host: localhost
        port: 6379
    
    **properties**
    spring.cache.type=redis
    spring.redis.host=localhost
    spring.redis.prot=6379

    Spring Boot Application 설정

    @EnableCaching 어노테이션 추가 ( Cache 사용할 것임을 알림 )

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

    Cache 주요 어노테이션

    1. @Cacheable
      캐시가 존재한다면 캐시 값을 조회, 캐시가 존재하지 않는다면 캐시 저장
    2. @CachePut
      캐시에 값 여부와 상관없이 저장
    3. @CacheEvict
      캐시를 삭제

    사용할 로직에 어노테이션 추가

    @Cacheable

    게시판이 존재한다고 했을 때, id를 key값 설정
    cache에 key=id가 존재한다면 해당 key에 맞는 value를 return
    존재하지 않는다면 로직을 수행한 return값이 value가 된다.

    @Cacheable(key = "#id", value = "board")
        public Board findOneById(Long id) {
                    return boardRepository.findById(id).orElseThrow(BoardNotFoundException::new);
        }

    @CachePut

    key=id의 존재 여부에 관계 없이 cache에 저장한다

    @CachePut(key = "#id", value = "board")
        public Board findOneById(Long id) {
                    return boardRepository.findById(id).orElseThrow(BoardNotFoundException::new);
        }

    @CacheEvict

    key=id인 데이터를 삭제한다

    @CachePut(key = "#id", value = "board")
        public Board findOneById(Long id) {
                    return boardRepository.findById(id).orElseThrow(BoardNotFoundException::new);
        }

    캐시를 적용했을 때의 속도 차이

    캐싱하지 않았을 때 약 5500개의 데이터 조회

     

    365ms의 속도를 보임

     

     

    캐싱했을 때 같은 데이터 조회

     

    43 ms의 속도로 빠르게 조회가 가능하며, 데이터베이스와 연결한 데이터라면 쿼리 또한 나가지 않음을 확인할 수 있다

    댓글

Designed by Tistory.