일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 상태코드
- JQuery
- mybatis
- java
- SQL
- WAS
- Tomcat
- JSON
- Redis
- Eclipse
- 보안
- DBeaver
- 마이바티스
- db
- 이클립스
- Linux
- 오라클
- git
- 모바텀
- 자바스크립트
- 디비버
- 자바
- 인텔리제이
- HTTP
- svn
- IntelliJ
- oracle
- Javascript
- 톰캣
- Server
- Today
- Total
JongTachi의 개발 블로그
[SpringBoot] RedisTemplate이란? 본문
Redis는 초고속 데이터 저장소로, 캐시, 세션 저장소, 실시간 데이터 처리 등 다양한 애플리케이션에서 활발히 사용되고 있습니다.
[잠깐!]
Redis를 모르신다면 밑에 게시물 보고 참고하세요.
https://jongtachi.tistory.com/170
오늘은 Spring Framework에서 제공하는 RedisTemplate를 알아보겠습니다. 🚀
1. RedisTemplate란?
RedisTemplate은 Spring에서 Redis와의 상호작용을 더 쉽게 만들어주는 템플릿 클래스입니다. 마치 SQL 데이터베이스에서 JdbcTemplate이나 JpaRepository를 사용하는 것처럼, Redis에 데이터를 저장하거나 가져오는 작업을 단순화할 수 있습니다.
- Redis에 데이터를 저장하고 검색하는 기본적인 기능부터
- 리스트(List), 해시(Hash), 셋(Set), 정렬된 셋(ZSet) 등 다양한 데이터 구조까지 지원하는 다재다능한 도구입니다.
즉, 복잡한 Redis 커맨드를 직접 작성할 필요 없이 심플하고 직관적인 방식으로 Redis와 소통할 수 있는 것이죠.
2. RedisTemplate 설정하기
먼저 RedisTemplate을 사용하려면 Spring Boot 프로젝트에서 Redis와 연결 설정을 해야 합니다.
간단하게 pom.xml에 의존성을 추가하면 RedisTemplate을 바로 사용할 수 있습니다.
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
3. 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.StringRedisSerializer;
@Configuration
public class RedisConfig {
@Bean
public RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory connectionFactory) {
RedisTemplate<String, Object> template = new RedisTemplate<>();
template.setConnectionFactory(connectionFactory);
// 키와 값을 직렬화할 때 문자열로 변환
template.setKeySerializer(new StringRedisSerializer());
template.setValueSerializer(new StringRedisSerializer());
return template;
}
}
4. 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, String value) {
redisTemplate.opsForValue().set(key, value); // 데이터 저장
}
public String getData(String key) {
return (String) redisTemplate.opsForValue().get(key); // 데이터 조회
}
public void deleteData(String key) {
redisTemplate.delete(key); // 데이터 삭제
}
}
위 코드에서는 opsForValue()를 사용해 String 데이터 형식으로 저장하고 검색합니다. RedisTemplate은 여러 데이터 구조를 지원하며, opsForHash()나 opsForList(), opsForSet() 같은 메서드를 사용해 다양한 Redis 데이터 타입과 상호작용할 수 있습니다.
주요 메서드
- opsForValue(): 문자열 값을 저장하고 검색
- opsForHash(): 해시맵과 상호작용
- opsForList(): 리스트 데이터를 저장하고 처리
- opsForSet(): 집합 데이터를 관리
- opsForZSet(): 정렬된 셋을 처리
5. RedisTemplate의 고급 기능 : 트랜잭션과 파이프라인
Redis는 기본적으로 단일 명령어가 원자적으로 처리되지만, 여러 명령을 원자적으로 실행해야 할 때 트랜잭션이 유용합니다. RedisTemplate은 트랜잭션을 지원하므로 여러 명령을 묶어 원자적으로 실행할 수 있습니다.
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@Service
public class RedisTransactionService {
@Autowired
private RedisTemplate<String, Object> redisTemplate;
@Transactional
public void performTransaction() {
redisTemplate.multi(); // 트랜잭션 시작
try {
redisTemplate.opsForValue().set("key1", "value1");
redisTemplate.opsForValue().set("key2", "value2");
redisTemplate.exec(); // 트랜잭션 커밋
} catch (Exception e) {
redisTemplate.discard(); // 트랜잭션 롤백
}
}
}
위 코드에서는 트랜잭션을 통해 여러 Redis 명령을 원자적으로 처리하고 있습니다. 만약 트랜잭션 중 오류가 발생하면, 모든 작업이 롤백됩니다.
감사합니다.
'FrameWork > Spring&SpringBoot' 카테고리의 다른 글
[SpringBoot] 스프링 @Scheduled (cron 활용) (0) | 2024.01.09 |
---|---|
[SpringBoot] Spring Boot 서버에서 실행하기 (1) | 2023.12.17 |
[Spring&SpringBoot] Spring과 Spring Boot의 차이 (0) | 2023.05.27 |