Redis는 대용량 데이터를 빠르게 처리할 수 있는 인메모리 데이터 저장소로,
성능과 실시간성이 중요한 시스템에서 자주 사용됩니다.
Redis는 고속 데이터 처리를 위해 사용되는 인메모리 데이터 저장소입니다.
일반적인 관계형 데이터베이스(RDBMS)와는 다르게, 데이터를 디스크가 아닌 메모리에 저장하기 때문에
읽기/쓰기 속도가 매우 빠릅니다.
String, List, Set, Sorted Set, Hash, Stream 등| 항목 | Redis | RDBMS |
|---|---|---|
| 저장 방식 | 메모리 기반 (선택적으로 디스크) | 디스크 기반 |
| 속도 | 매우 빠름 | 상대적으로 느림 |
| 데이터 구조 | Key-Value 기반 자료구조 | 테이블 기반 |
| 트랜잭션 | 단순한 MULTI/EXEC 제공 | 복잡한 트랜잭션 처리 가능 |
| 주요 용도 | 캐시, 세션 저장, 실시간 처리 | 정형화된 데이터 저장, 트랜잭션 |
| 영속성 | RDB, AOF 지원 (선택적) | 기본적으로 디스크에 영속 저장 |
| 항목 | RDB | AOF |
|---|---|---|
| 저장 방식 | 일정 주기로 메모리 상태 저장 | 모든 write 명령을 로그로 저장 |
| 속도 | 빠름 | 느림 (상대적으로) |
| 복구성 | 일부 데이터 유실 가능 | 데이터 손실 최소화 가능 |
| 파일 크기 | 작음 | 큼 |
실시간 서비스에서는 Redis Sentinel이나 Redis Cluster 구성을 통해 장애 대응 및 분산 저장을 구현합니다.
@Configuration
public class RedisConfig {
@Bean
public RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory factory) {
RedisTemplate<String, Object> template = new RedisTemplate<>();
template.setConnectionFactory(factory);
return template;
}
}
@Service
public class CacheService {
@Autowired
private RedisTemplate<String, Object> redisTemplate;
public void save(String key, String value) {
redisTemplate.opsForValue().set(key, value);
}
public String get(String key) {
return (String) redisTemplate.opsForValue().get(key);
}
}
🚀 Redis는 단순한 캐시를 넘어, 다양한 실시간 서비스의 핵심 구성 요소입니다.
단순 암기보다 언제, 왜 Redis를 쓰는지에 대한 이해를 중심으로 정리하세요!