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?