본문 바로가기
Spring

Spring Data Redis

by Mecodata 2024. 4. 18.

정의

- Spring Boot와 Redis 간의 상호작용이 가능하도록 제공하는 Spring Boot 외부 라이브러리

- Redis를 DB 또는 캐시로 사용하는 경우에 사용 (세션 관리일 경우에는 Spring Session Data Redis 사용)

- RedisTemplate 클래스를 사용하여 Redis와의 상호작용을 지원

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

 

RedisTemplate

정의 및 특징

- Redis에 데이터를 저장, 검색, 갱신 및 삭제하는 데 사용 (CRUD)

- 직렬화/역직렬화, 트랜잭션 처리, 파이프라인 지원 등을 포함한 다양한 기능을 제공

- Redis 트랜잭션 지원

- Redis 파이프라인 지원

- 제네릭(<>)을 이용하여 RedisTemplate의 키와 값의 타입을 정해줘야 함

주요 메소드

- expire(key, num, TimeUnit.단위) = 데이터의 유효 기간 설정

 

- opsForValue() = ValueOperations 객체 생성 (Redis에서의 자료구조 = String)

- opsForList() = ListOperations 객체 생성 (Redis에서의 자료구조 = List)

- opsForSet() = SetOperations 객체 생성 (Redis에서의 자료구조 = Set)

- opsForZSet() = ZSetOperations 객체 생성 (Redis에서의 자료구조 = Sorted Set)

- opsForHash() = HashOperations 객체 생성 (Redis에서의 자료구조 = Hash)

오퍼레이션(Operation) = Redis의 데이터 타입에 따른 작업 수행 메서드를 제공하는 인터페이스

- 오퍼레이션의 주요 메소드 = get(key), set(key, value), set(key, value, num, TimeUnit), append(key, value), size(key)

 

기본 세팅

RedisConfig

@Configuration
public class RedisConfig {

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

    @Bean // Redis Connector로 Lettuce 사용 
    public RedisConnectionFactory redisConnectionFactory() {
        return new LettuceConnectionFactory(redisHost, redisPort);
    }
    
    @Bean // 데이터 타입 <String, String> 사용
    public RedisTemplate<String, String> redisTemplate() {
    	StringRedisTemplate redisTemplate = new StringRedisTemplate();
        redisTemplate.setConnectionFactory(redisConnectionFactory()); // Lettuce 적용
        return redisTemplate;
    }
	
}

- Redis Connector에는 Lettuce(비동기), Jedis(동기)가 있는데 더 나은 성능을 가진 Lettuce를 주로 사용

- StringRedisTemplate = RedisTemplate<String, String>

RedisTemplate 활용 예시

public class RedisTest {
	
    @Autowired
    private StringRedisTemplate redisTemplate;
    
    public void redisSet(String key, String value) {
        ValueOperations<String, String> valueOps = redisTemplate.opsForValue();
        valueOps.set(key, value, 20, TimeUnit.MINUTES); // 유효 기간 20분으로 데이터를 Redis에 저장
    }

    public String redisGet(String key) {
        ValueOperations<String, String> valueOps = redisTemplate.opsForValue();
    	String value = valueOps.get(key);
        return value;
    }
    
}

 

'Spring' 카테고리의 다른 글

SseEmitter  (1) 2024.04.29
Session 타임 아웃 설정  (0) 2024.04.15
JDBC와 DB 연동  (0) 2024.03.19
https 통신 방법 (SSL 인증서)  (1) 2024.02.14
The import org.springframework cannot be resolved 에러 (Gradle)  (0) 2024.02.12

댓글