본문 바로가기

기술

redisTemplate이란

RedisTemplate은 Spring Framework에서 제공하는 클래스 중 하나로, Redis 데이터베이스와 상호작용하기 위해 사용됩니다.

Redis는 메모리 기반의 고성능 키-값 데이터 저장소로, 캐싱, 세션 관리, 메시지 큐잉 등에 자주 사용됩니다.

RedisTemplate은 이러한 Redis 기능들을 자바 코드에서 쉽게 사용할 수 있도록 도와주는 도구입니다.

RedisTemplate의 주요 특징 및 기능

  1. 다양한 데이터 타입 지원:
    • Redis는 문자열, 해시, 리스트, 셋, 정렬된 셋 등 다양한 데이터 타입을 지원합니다.
    • RedisTemplate은 이러한 모든 데이터 타입에 대해 접근할 수 있는 메서드를 제공합니다. 예를 들어, opsForValue()는 문자열 작업을 위한 메서드를, opsForHash()는 해시 작업을 위한 메서드를 반환합니다.
  2. 키-값 작업의 추상화:
    • Redis는 주로 키-값 쌍으로 데이터를 다룹니다. RedisTemplate은 이러한 작업을 더 간단하게 할 수 있도록 키-값 접근을 추상화하여 제공해줍니다.
    • set, get, delete와 같은 일반적인 작업을 위한 메서드를 제공합니다.
  3. 직렬화/역직렬화:
    • Redis는 데이터를 바이트로 저장하므로, 데이터를 저장하거나 가져올 때 직렬화와 역직렬화 과정이 필요합니다.
    • RedisTemplate은 이를 자동으로 처리할 수 있도록 여러 가지 직렬화 방법을 설정할 수 있습니다. 기본적으로 StringRedisSerializer, JdkSerializationRedisSerializer 등을 사용할 수 있습니다.
  4. 트랜잭션 및 파이프라인 지원:
    • Redis의 트랜잭션과 파이프라인 기능을 지원하여 여러 작업을 하나의 작업으로 처리하거나, 여러 작업을 동시에 처리할 수 있습니다.
  5. pub/sub 기능 지원:
    • Redis의 퍼블리시/구독(pub/sub) 기능을 통해 메시지 브로커로 사용할 수 있으며, RedisTemplate은 이 기능을 사용하기 쉽게 만들어줍니다.

 

RedisTemplate 사용 예시

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Service;

@Service
public class RedisService {

    @Autowired
    private RedisTemplate<String, Object> redisTemplate;

    public void saveData(String key, Object value) {
        redisTemplate.opsForValue().set(key, value);
    }

    public Object getData(String key) {
        return redisTemplate.opsForValue().get(key);
    }

    public void deleteData(String key) {
        redisTemplate.delete(key);
    }
}

 

 

 

RedisTemplate 설정

Spring Boot를 사용한다면, 기본적으로 RedisTemplate이 자동으로 설정되지만, 필요에 따라 커스터마이징할 수 있습니다.

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.redis.connection.RedisConnectionFactory;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.serializer.GenericJackson2JsonRedisSerializer;
import org.springframework.data.redis.serializer.StringRedisSerializer;

@Configuration
public class RedisConfig {

    @Bean
    public RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory connectionFactory) {
        RedisTemplate<String, Object> template = new RedisTemplate<>();
        template.setConnectionFactory(connectionFactory);

        // 키는 String으로 직렬화
        template.setKeySerializer(new StringRedisSerializer());
        // 값은 JSON 형태로 직렬화
        template.setValueSerializer(new GenericJackson2JsonRedisSerializer());

        return template;
    }
}

 

 

 

'기술' 카테고리의 다른 글

redisson-spring-boot-starter란  (0) 2024.08.12
Spring Boot의 Java 버전 변경하기 (maven, Intellij)  (0) 2024.05.08
Maven을 이용한 웹 어플리케이션 생성 및 설정  (0) 2022.07.23
Maven이란?  (0) 2021.01.08
RHEL7의 malloc  (0) 2021.01.03