-
Notifications
You must be signed in to change notification settings - Fork 0
Open
Description
Redis 연습용 사용처 정리
Redis를 실무 관점에서 연습하기 위한 사용처 및 구현 아이디어 정리
(Spring Boot 기준, 점진적으로 적용)
🎯 목표
- Redis 기본 자료구조 및 명령어 이해
- 캐싱/카운터/랭킹/세션 등 실무 사용 패턴 체험
- Redis 사용 시 고려해야 할 포인트 학습
1️⃣ 조회 결과 캐싱
목적: DB 부하 감소, 응답 속도 개선
예시
- 게시글 상세 조회
- 상품 상세 조회
- 사용자 프로필 조회
구현 포인트
- Key:
post:{id} - Value: JSON 직렬화 DTO
- TTL 설정 (예: 60초 ~ 10분)
- Cache miss → DB 조회 → Redis 저장
체크 포인트
- TTL 만료 후 재조회 동작
- null 캐싱 여부
- 캐시 갱신 전략 (lazy loading)
2️⃣ 로그인 세션 저장
목적: 서버 확장 시 세션 공유
예시
- Spring Session + Redis
- 로그인 세션 저장
구현 포인트
- Key:
session:{sessionId} - Value: 사용자 정보
- TTL = 세션 만료 시간
체크 포인트
- 서버 다중 인스턴스 환경에서도 세션 유지
- 로그아웃 시 세션 삭제
- TTL 연장(sliding session)
3️⃣ 인증 코드 / 임시 토큰 저장
목적: 짧은 수명의 데이터 처리
예시
- 이메일 인증 코드
- 비밀번호 재설정 토큰
구현 포인트
- Key:
auth:email:{email} - Value: 인증 코드
- TTL: 3~5분
체크 포인트
- 재요청 시 덮어쓰기
- 만료 시 자동 삭제
- 인증 성공 시 즉시 삭제
4️⃣ 조회수 / 좋아요 카운터
목적: 빠른 카운팅 처리
예시
- 게시글 조회수
- 좋아요 수
구현 포인트
- Redis 명령어:
INCR,INCRBY - Key:
view:post:{id}
체크 포인트
- DB와의 동기화 방식
- Redis 장애 시 대응
- 주기적 DB flush 전략
5️⃣ 랭킹 / 인기 목록
목적: 실시간 순위 처리
예시
- 인기 게시글 TOP 10
- 오늘 많이 본 콘텐츠
Redis 자료구조
- Sorted Set (ZSET)
구현 포인트
- Key:
ranking:post - Score: 조회수
- Value: postId
체크 포인트
- ZINCRBY 사용
- 상위 N개 조회
- 일/주/월 랭킹 분리
6️⃣ 중복 요청 방지 (락 / 멱등성)
목적: 중복 처리 방지
예시
- 결제 중복 요청 방지
- 버튼 연타 방지
구현 포인트
SET key value NX EX- Key:
lock:action:{userId}
체크 포인트
- TTL 설정 이유 이해
- 락 해제 실패 케이스
- Redisson 적용 여부
7️⃣ 실시간 알림 / 이벤트 큐
목적: 비동기 처리
예시
- 알림 전송
- 이벤트 처리
Redis 기능
- Pub/Sub
- Stream
체크 포인트
- 메시지 유실 여부
- Consumer Group 이해
- Kafka와 차이점 정리
8️⃣ Rate Limiting (요청 제한)
목적: 트래픽 제어
예시
- IP 기반 요청 제한
- 사용자별 API 호출 제한
구현 포인트
INCR+ TTL- Sliding Window 방식
체크 포인트
- 동시성 문제
- 분산 환경 적용
- Redis 장애 시 fallback 전략
🧪 추천 미니 프로젝트 시나리오
- 게시글 조회 API 구현
- Redis 캐싱 적용
- 조회수 Redis 카운터 적용
- 인기 게시글 TOP 10 구현
- Rate Limit 적용
📌 추가 학습 예정
- RedisTemplate vs Lettuce vs Redisson
- Cache Stampede / Snowball 문제
- Redis 장애 대응 전략
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels