RedisTemplate은 Spring Framework에서 제공하는 클래스 중 하나로, Redis 데이터베이스와 상호작용하기 위해 사용됩니다.
Redis는 메모리 기반의 고성능 키-값 데이터 저장소로, 캐싱, 세션 관리, 메시지 큐잉 등에 자주 사용됩니다.
RedisTemplate은 이러한 Redis 기능들을 자바 코드에서 쉽게 사용할 수 있도록 도와주는 도구입니다.
RedisTemplate의 주요 특징 및 기능
- 다양한 데이터 타입 지원:
- Redis는 문자열, 해시, 리스트, 셋, 정렬된 셋 등 다양한 데이터 타입을 지원합니다.
- RedisTemplate은 이러한 모든 데이터 타입에 대해 접근할 수 있는 메서드를 제공합니다. 예를 들어, opsForValue()는 문자열 작업을 위한 메서드를, opsForHash()는 해시 작업을 위한 메서드를 반환합니다.
- 키-값 작업의 추상화:
- Redis는 주로 키-값 쌍으로 데이터를 다룹니다. RedisTemplate은 이러한 작업을 더 간단하게 할 수 있도록 키-값 접근을 추상화하여 제공해줍니다.
- set, get, delete와 같은 일반적인 작업을 위한 메서드를 제공합니다.
- 직렬화/역직렬화:
- Redis는 데이터를 바이트로 저장하므로, 데이터를 저장하거나 가져올 때 직렬화와 역직렬화 과정이 필요합니다.
- RedisTemplate은 이를 자동으로 처리할 수 있도록 여러 가지 직렬화 방법을 설정할 수 있습니다. 기본적으로 StringRedisSerializer, JdkSerializationRedisSerializer 등을 사용할 수 있습니다.
- 트랜잭션 및 파이프라인 지원:
- Redis의 트랜잭션과 파이프라인 기능을 지원하여 여러 작업을 하나의 작업으로 처리하거나, 여러 작업을 동시에 처리할 수 있습니다.
- 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 |