Redis 사용해보자!


1. Redis란?

in-memory 기반의 data structure 저장 기술로 데이터베이스 서버, 데이터 캐싱 등이 가능한 시스템이다.

특징

사용 가능한 데이터형

장점

2. Redis 설치 및 spring boot 에서 사용

# 최신 이미지 가져오기, 레디스 서버 실행 
docker pull redis 
docker run --name redis -d -p 6379:6379 redis

# Docker의 redis-cli로 접속  
docker run -it --link redis:redis --rm redis redis-cli -h redis -p 6379 

# Redis-cli로 직접 접속하기: 연결된 6379 포트를 사용
redis-cli -p 6379

# Shell로 Docker 리눅스에 접속 
docker exec -it redis /bin/bash
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
redis:
    host: 
    port: 
    passwd:

3. Nexters16 프로젝트에서 Redis 사용하기

회원끼리 편지를 주고 받는 기능을 위해 우리는 회원가입 시 사용자에게 전화번호를 받고 인증까지 진행하기로 했다.
전화번호 인증을 하려면 인증 코드도 저장해야 하고 인증 결과도 저장해야 하는데
redis를 이용해서 몇가지 데이터를 key-value 형태로 저장하는게 좋겠다는 회의 결과가 나왔다!

프로젝트에서 redis 사용
Java의 redis client는 크게 jedis와 lettuce 2가지가 있는데, 우리는 lettuce를 사용하고 있다.
spring boot 2.0에서 lettuce가 기본 클라이언트가 되서 사용해보기 시작했는데 어떤 점에서 lettuce가 더 좋을지 알아보자!

connection 인스턴스의 공유라는 점에서 Thread-safe인 lettuce를 사용해야 겠다는 생각이 들지만
Single-Thread의 레디스에 데이터에 접근할 때? 혹은 다른 관점에서는 어떨지 더 알아보면 좋을 것 같다.


일단 지금 진행중인 프로젝트에서

<전화번호-인증코드> 이런 방식으로 redis에 저장하고 인증이 완료되면 session을 통해 redis에 인증 여부를 저장하려고 하는데 session에 대한 개념이 부족해 더 공부해봐야 할 것 같다!