-
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 주요 어노테이션
- @Cacheable
캐시가 존재한다면 캐시 값을 조회, 캐시가 존재하지 않는다면 캐시 저장 - @CachePut
캐시에 값 여부와 상관없이 저장 - @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의 속도로 빠르게 조회가 가능하며, 데이터베이스와 연결한 데이터라면 쿼리 또한 나가지 않음을 확인할 수 있다
'Redis' 카테고리의 다른 글
Redis 4 - Redis의 자료구조 및 명령어 [ Set ] (0) 2021.04.06 Redis 3 - Redis의 자료구조 및 명령어 [ Key ] (0) 2021.04.06 Redis 2 - Redis의 자료구조 및 명령어 [ List편 ] (0) 2021.04.06 Redis 1 - Redis란? Redis VS Memcached (0) 2021.04.06 - @Cacheable