Redis

Stormi·2022년 2월 17일
0

개발

목록 보기
3/20

spring data redis

  • Redis를 JPA Repository를 이용하듯이 인터페이스를 제공하는 스프링 모듈

  • CRUD Repository를 지원하기 때문에 좀 더 직관적으로 사용가능하다.

Lettuce

Redis Java Client

  • 현재 스프링에서 지원하는 client

  • jedis, lettuce만 현재 공식 지원

Embedded Redis

H2와 같은 내장 redis 데몬


redis는 환경 구성이 같도록 profile=local alpha 일때만 이렇게만 다르게 해여하고 코드는 바뀌면 안됨

설정정보 쓴 파일만 바뀌도록 해야함

  1. 애플리케이션 코드상에서 분기가 이뤄지도록 하는 방식
  • 분기처리로 어떤 것을 Bean으로 설정할지 다르게하면됨

  • master-slave(aws elasticCache가 쓰는 형식)

  • local일때는 단일인지 mode로 나누기

  1. application.yaml으로 바꾸기

RedisConnectionFactory를 통해 내장 또는 외부의 Redis를 연결


내장 Redis

Redis 외부 서버가 존재할 경우에 필요는 없지만,

내장 서버로 환경을 구성할 경우는 Embedded Redis의 설정을 추가로 해주어야한다.

내장 Redis를 사용하기 위한 의존성을 추가해주고

내장 Redis를 사용할 때 설정 파일의 profile이 local일 때만 작동하도록 @Profile어노테이션을 사용해서 Embedded Redis클래스를 생성해준다.


springboot 기반에서 Cache 서버를 얼마나 쉽게 구성할 수 있는지 알 수 있다

우선 Cache를 왜 사용하는 가?

  • cache는 한번 읽고 처리한 데이터를 임시로 저장하고 필요에 따라 전송, 갱신, 삭제하는 기술로 보통은

데이터의 보관장소로 서버의 메모리를 사용하는 경우가 많다.

  • 따라서 디스크에서 정보를 얻어오는 것보따 빠른 I/O 성능을 얻을 수 이씅나 서버가 다운되거나 재부팅 될때 사라지는 휘발성이다.

  • 말 그대로 임시적으로 빠르게 접근하기위한 용도로 사용해야한다.

어떤 정보들을 Cache로 사용하나?

  • 포털의 검색어

  • 쇼핑몰의 핫딜 상품, 베스트 셀러, 추천상품 등

  • 상품의 카테고리와 카테고리별 등록 상품수

  • 방문자수, 조회수, 추천수

  • 1회성 인증정보(SMS 본인인증 정보, IP 정보등)


springboot에 내가 캐시를 사용하겠다고 알려주기위해서는 Springboot main Application class에 @EnableCaching 어노테이션을 추가해한다.

@Cacheable @CachePut -> 캐시등록

@Cacheable 은 캐시가 있으면 캐시의 정보를 가져오고 , 없으면 등록한다.

@CachePut은 무조건 캐시에 저장한다.

  • @Controller 메소드에 적용하면 파라미터를 Redis의 키 값으로 자동 지정할 수 있다.
@Cacheable(value = "post", key = "#id", unless = "#result.shares < 500") 

@GetMapping("/{id}")

@CacheEvict는 캐시를 삭제하는 어노테이션이다.

@CacheEvict(value = "post", key = "#id")
@DeleteMapping("/delete/{id}")

0개의 댓글