SPRING

Redis 사용방법 (feat. RedisTemplate)

개발하는고양이 2024. 2. 6. 20:47
반응형

설정

라이브러리 추가

스프링 부트에서는 spring data redis 라이브러리가 필요하므로 build.gradle 에 의존성을 추가해준다.

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

이를 통해 Lettuce, Jedis라는 두개의 오픈소스 라이브러리를 사용할 수 있다.

Lettuce는 별도 설정 필요x, Jedis 는 별도의 의존성이 필요하다.

Redis를 설정하는 두가지 방식

spring data redis가 제공하는 방법은 2가지이다.

- RedisTemplate

- RedisRespository

 

spring data redis에 내장되어 있는 lettuce를 사용하고, RedisTemplate을 설정해보자.

Config 파일

@RequiredArgsConstructor
@Configuration
@EnableRedisRepositories
public class RedisRepositoryConfig {

    @Value("${spring.redis.host}")
    private String host;
    @Value("${spring.redis.port}")
    private int port;

    // Lettuce 사용
    @Bean
    public RedisConnectionFactory redisConnectionFactory(){

        return new LettuceConnectionFactory(host,port);
    }
    @Bean
    public RedisTemplate<String, Object> redisTemplate() {
        RedisTemplate<String, Object> redisTemplate = new RedisTemplate<>();
        redisTemplate.setConnectionFactory(redisConnectionFactory());
        redisTemplate.setKeySerializer(new StringRedisSerializer());
        redisTemplate.setValueSerializer(new StringRedisSerializer());
        return redisTemplate;
    }
}

 

1. LettuceConnectionFactory 빈 등록

redis 호스트와 포트를 사용하여 LettuceConnectionFactory 생성하여 빈으로 등록해준다.

Lettuce는 동일한 thread-safe connection을 공유한다.

https://my-lifemap.tistory.com/141

 

Process, Thread & Thread-safe

Process 일단 프로세스부터 정리해보자. 실행중인 프로그램을 프로세스라고 한다. 프로세스는 독립된 개체로, 운영체제로부터 별도의 메모리 영역을 할당받으며, 서로에게 접근이 불가능하다. 그

my-lifemap.tistory.com

 

 

2. RedisTemplate 빈 등록

RedisTemplate을 사용할 때 Spring-Redis 간 데이터 직렬화, 역직렬화 시, Jdk 직렬화 방식이다.

(자바의 직렬화 역직렬화는 따로 써야겠음..)

redis-cli 로 데이터를 볼때 알 수 없는 형태로 출력된다. 그렇기 때문에 setKeySerializer, setValueSerializer 설정을 해주었다.

 

➕ 유용한 메서드

- opsForValue : String을  역/직렬화 해줌

- opsForList : List를 역/직렬화 해줌

- opsForSet : Set를 역/직렬화 해줌

- opsForZSet : ZSet을 역/직렬화 해줌

- opsForHash :  Hash를 역/직렬화 해줌

참고

https://wildeveloperetrain.tistory.com/32

반응형