1. Redis는 무엇일까?
Redis(Remote Dictionary Server)는 메모리에 데이터를 저장하는 NoSQL 데이터베이스이다.
보통 DB라고 하면 디스크에 저장하는 걸 떠올리지만, Redis는 데이터를 RAM(메모리)에 저장하기 때문에 속도가 엄청 빠르다.
- 키(Key)와 값(Value) 형태로 데이터를 저장하는 인메모리 기반의 Key-Value Store
- 다양한 데이터 타입을 지원 -> 단순 캐시 이상으로 활용 가능
2. 왜 캐시로 Redis를 많이 쓸까?
웹 서비스에서는 DB 요청이 많아지면 속도가 느려지고 서버 부하가 굉장히 심해지기 때문에,
이때 자주 조회되지만 자주 바뀌지 않는 데이터를 Redis에 저장해두면,
웹 서버는 DB가 아닌 Redis에서 빠르게 데이터를 가져올 수 있어서 속도 향상과 부하 분산이 가능하다.
예시:
- 로그인한 회원의 회원 정보
- 게시판의 상단 고정 공지사항
- 실시간 인기 검색어
3. 구조적으로 어떻게 작동할까?
[사용자 요청]
↓
[웹 서버 (Java, Spring 등)]
↓
[Redis에 데이터 있는지 확인]
├─✅ 있음 → 바로 응답 (빠름!)
└─❌ 없음 → DB 조회 → Redis에 저장 → 응답
<Cache Aside Pattern>
4. Redis의 주요 데이터 타입
타입 | 설명 | 예시 |
String | 가장 기본적인 값 저장 | "user:1:name" => "영희" |
Hash | 필드-값 구조 (JSON과 유사) | "user:1" => {name:영희, age:20} |
List | 순서 있는 리스트 | "recent:posts" => [101, 102, 103] |
Set | 중복 없는 집합 | "user:likes" => {23, 45, 67} |
Sorted Set | 점수 기반 정렬 | "ranking" => {영희:100, 철수: 80} |
5. Java(Spring)에서 어떻게 사용할까?
보통 Spring에서는 Spring Data Redis를 통해 Redis를 쉽게 연동한다
@Autowired
private StringRedisTemplate redisTemplate;
redisTemplate.opsForValue().set("key", "value");
String result = redisTemplate.opsForValue().get("key");
JSON저장 시에는 ObjectMapper 와 함께 사용하기도 한다.
6. 정리
항목 | 설명 |
속도 | 메모리 기반으로 매우 빠름 |
용도 | 캐시, 세션 저장소, 랭킹 시스템, 큐, Pub/Sub 등 |
구조 | Key-Value Store, 다양한 타입 지원 |
패턴 | Cache Asdie Pattern, Write-through 등 |
사용법 | Spring Data Redis or Jedis/Lettuce 클라이언트 사용 |
'개발 > 알면 좋은' 카테고리의 다른 글
도커(Docker) (0) | 2025.03.28 |
---|---|
클라우드 DB vs 물리 서버 DB (0) | 2025.03.28 |
데브옵스(DevOps) (0) | 2025.03.26 |
카프카(Kafka) (0) | 2025.03.25 |