




레디스는 “인메모리” DB이기 때문에 메모리 용량이 부족하거나 데이터가 휘발될 위험이 있다.
이러한 특징 때문에 상황에 따른 적절한 전략 선정이 필요하다.


Write Around
장점: 성능이 좋다.
단점: 캐시와 DB의 데이터 정합성 유지가 어렵다. (cache miss 발생시 비로소 캐시에 저장됨. 따라서 그 전까지는 데이터 불일치.)

Write Back
장점: 일정 주기마다 “묶어서” DB에 저장하므로, 쓰기 비용을 줄일 수 있다.
단점: 캐시의 데이터 유실 위험이 있다.


Spring에서 Redis를 쉽게 사용할 수 있도록 도와주는 라이브러리다. 즉 비유하자면 다음과 같다.
Spring Data Redis는 Redis와의 연결을 관리하기 위해, Lettuce 같은 Redis client 라이브러리를 내부적으로 사용하고 있다.
build.gradle)dependencies {
implementation 'org.springframework.boot:spring-boot-starter-data-redis'
}
application.yml)spring:
redis:
host: localhost
port: 6379
password: '' # 비밀번호가 없으면 빈 문자열 유지
RedisTemplate을 빈으로 등록하여 사용할 수 있다. (문자열 처리에 특화된 StringRedisTemplate도 있음)// RedisTemplate 설정 예시
@Configuration
public class RedisConfig {
@Value("${spring.redis.host}")
private String host;
@Value("${spring.redis.port}")
private int port;
@Bean
public RedisConnectionFactory redisConnectionFactory() {
return new LettuceConnectionFactory(host, port);
}
@Bean
public RedisTemplate<?, ?> redisTemplate() {
RedisTemplate<?, ?> redisTemplate = new RedisTemplate<>();
redisTemplate.setConnectionFactory(redisConnectionFactory());
return redisTemplate;
}
}
// Redis 사용 예시
@Service
public class RedisService {
private final RedisTemplate<String, Object> redisTemplate;
public RedisService(RedisTemplate<String, Object> redisTemplate) {
this.redisTemplate = redisTemplate;
}
public void saveData(String key, Object value) {
redisTemplate.opsForValue().set(key, value);
}
public Object getData(String key) {
return redisTemplate.opsForValue().get(key);
}
}
사용하려는 자료구조에 맞춰 opsForValue, opsForList, opsForSet, opsForHash, opsForZSet 등을 적절히 사용하기