#4 Redis 연동

CHEESE·2022년 7월 26일
0

FLTM

목록 보기
4/6

회원가입 시 이메일 인증을 하기 위해 키 값을 redis에 저장하고자 한다.

Redis 설치

로컬 환경에 직접 설치하는 것 보다는 Docker를 이용하여 설치하기로 했다.

docker run -d --name redis -p 6379:6379 redis

의존성 추가

Jedis vs Lettuce ?

gradle 의존성을 추가하려고 보니 Java의 Redis Client에는 두 가지 종류가 있었다.
두 가지 모두 유명한 오픈소스이지만, Lettuce가 Netty(비동기 이벤트 기반 고성능 네트워크 프레임워크) 기반의 클라이언트라서 비동기로 요청을 처리하기 때문에 더 성능이 높다고 한다.
속도도, 성능도 더 좋다고 하니 고민의 여지 없이 Lettuce를 사용하겠다.

build.gradle

// redis lettuce
implementation'org.springframework.boot:spring-boot-starter-data-redis'
implementation 'org.springframework.boot:spring-boot-starter-actuator'

Redis 서버 설정

application.properties

#Redis 설정
redis.host=127.0.0.1
redis.port=6379

config 클래스 설정

RedisConfig.java

import lombok.RequiredArgsConstructor;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.redis.connection.RedisConnectionFactory;
import org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory;
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.data.redis.repository.configuration.EnableRedisRepositories;
import org.springframework.data.redis.serializer.StringRedisSerializer;

@RequiredArgsConstructor
@Configuration
@EnableRedisRepositories
public class RedisConfig {
    @Value("${redis.host}")
    private String redisHost;

    @Value("${redis.port}")
    private int redisPort;

    /***
     * Redis와 Connection 생성
     */
    @Bean
    public RedisConnectionFactory connectionFactory() {
        return new LettuceConnectionFactory(redisHost, redisPort);
    }

    /***
     * Redis 서버와 통신
     * StringRedisTemplate를 사용하여 Key, value를 모두 문자열로 저장
     */
    @Bean
    public StringRedisTemplate redisTemplate() {
        final StringRedisTemplate redisTemplate = new StringRedisTemplate();
        redisTemplate.setKeySerializer(new StringRedisSerializer());
        redisTemplate.setValueSerializer(new StringRedisSerializer());
        redisTemplate.setHashKeySerializer(new StringRedisSerializer());
        redisTemplate.setHashValueSerializer(new StringRedisSerializer());
        redisTemplate.setConnectionFactory(connectionFactory());
        return redisTemplate;
    }
}

0개의 댓글