Skip to content

레디스 연습 #3

@philE22

Description

@philE22

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 장애 대응 전략

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions