Redis을 이용한 캐시

Reids란?

Remote Dictionary Server의 약어인 Redis는 "키-값" 구조의 비정형 데이터를 저장하고 관리하기 위한 오픈 소스 기반의 비관계형 데이터베이스 관리 시스템

모든 데이터를 메모리로 불러와서 처리하는 메모리 기반 DBMS

Memcached와 같이 인메모리(In-memory) 솔루션으로 분리된다.

  • In-memory Cache : 메모리 캐시를 적용해서 DB의 부하를 감소

  • Memcached : 데이터를 캐싱처리하는 데 사용하면 좋은 캐시이지만 Redis처럼 데이터타입이 다양하지는 않다.

Redis와 비교해보면 Memcached는 캐시 솔루션이고 여기에 저장소 개념까지 추가된 것이 Redis 메모리가 사라져도 원본 데이터로 즉시 복구할 수 있는 경우에는 Memcached사용 메모리가 사라지면 서비스에 장애가 발생하는 경우에는 Redis 사용

싱글 스레드로 구성되어있기 때문에 하나에 여러개의 서버를 띄우는 것이 가능!

다양한 데이터 모델 지원 String

  • List

  • Set

  • Hash

데이터 처리 명령어

  • set : 데이터 저장

  • mset : 여러개의 데이터 저장

  • get : 저장된 데이터 조회

  • mget : 여러개의 데이터 조회

  • rename : 저장된 데이터 변경

  • keys * : 저장된 모든 key를 검색

  • exists : 검색 대상의 key 존재 여부 확인

  • del 키값 : 해당 키-값 삭제

  • flushall : 전부 다 삭제

실습 Redis 설치

spring-boot-starter-data-redis 의존성 추가

RedisTemplate<String, Object>는 get/set을 위한 객체이다.

캐시의 사용을 위해서 SpringBootApplication 애노테이션 밑에 EnableCaching 애노테이션을 설정해준다.

캐싱 사용 대상 선언의 방법으로는

  • @Cacheable : 조회해서 없으면 캐시를 생성하고 결과를 반환, 만약 캐시된 값이 있는 경우에는 해당 값을 반환

  • @CacheEvict : 캐시 제거

  • @CachePut : 메소드의 실행을 방해하지 않고 캐시를 업데이트

  • @Caching : 메소드에 적용할 여러 캐시 조작을 재 그룹화

  • @CacheConfig : 클래스 수준에서 몇 가지 일반적인 캐시 관련 설정을 공유

key 정의 및 조건 정의 가능

: key 항목을 생략하게 되면 메소드명::파라미터값 으로 자동 등록된다. key에서 변수를 사용하고 싶다면 #뒤에 붙여서 사용하면 되고, 문자값을 사용하고 싶다면 " " 내부 에 ' ' 을 사이에 집어넣어주면 된다 -> 근데 왠만하면 식별이 가능한걸로 하자!

Last updated

Was this helpful?