1. Redis Template

Spring Data Redis에서 기본적으로 제공하는 Redis Client 객체.

주요 특징 3가지

  1. abstraction : 추상화 기능을 제공
  2. connection : 연결 관리
  3. serializer : 데이터를 저장하고 가져오는 과정에서 데이터 변환을 처리 (직렬화 기능)

Spring Data Redis LettuceJedis 두개의 클라이언트를 제공한다. 기본적으로 Lettuce를 사용하게 되는데, Jedis로 설정해서 사용도 가능하다.

flowchart LR
  RedisTemplate --> Lettuce
  RedisTemplate -.-> Jedis
	Lettuce --> Redis
	Jedis -.-> Redis

1.1. 의존성 추가

// Maven
<dependencies>
	<dependency>
		<groupId>org.springframework.data</groupId>
		<artifactId>spring-data-redis</artifactId>
		<version>{version}</version>
	</dependency>
</dependencies>
// gradle
implementation 'org.springframework.boot:spring-boot-starter-data-redis'

1.2. application.yaml

spring:
	data:
		redis:
			host: 127.0.0.1
			port: 6379

1.3. RestTemplate Bean 등록 예시

@Bean
public StringRedisTemplate stringRedisTemplate(RedisConnectionFactory redisConnectionFactory) {
	StringRedisTemplate template = new StringRedisTemplate();
	template.setConnectionFactory(redisConnectionFactory);
	return template;
}

사용 예시

public String getUserEmail(Long id) {
	// 레디스에 먼저 찾기
	String email = redisTemplate.opsForValue().get("users:%s:email".formatted(id));
	if(email != null)
		return email;

	// 없으면 DB에서 조회
	email = userRepository.findById(id).orElse(User.builder().build()).getEmail();
	redisTemplate.opsForValue().set("users:%s:email".formatted(id), email, Duration.ofSeconds(30));
	return email;
}