Post

4주5일차_리더보드와_Sorted_Set_실습

4주5일차_리더보드와_Sorted_Set_실습

필기 가자

*

1.3 리더보드 설계 시 고려사항

  1. 성능:
    • 순위 계산과 조회가 빠르게 이루어져야 함.
    • redis의 Sorted Set 데이터 타입은 O(log(N))의 시간 복잡도로 빠른 점수 업데이트와 조회를 지원.

4. 리더보드 최적화 및 고급 활용

redis의 리더보드는 빠르고 효율적이지만 대규모 데이터나 복잡한 조건을 처리할 때 성능 저하나 메모리 관리 이슈가 발생할 수 있습니다. 이를 해결하기 위한 최적화 및 고급 활용 방법을 아래에 정리합니다.

4.1 많은 데이터 처리 시 성능 최적화

  • pipeline 기능 활용으로 최적화 가능.

TTL 설정

  • 설명:
    • 오래된 데이터를 자동으로 삭제하여 메모리 사용량을 관리합니다.
    • 예를 들어, 특정 이벤트 기간 동안만 유효한 리더보드를 설정할 수 있습니다. Batch 업데이트

특정 기간 리더보드

  • 설명:
    • 타임스탬프와 점수를 결합하여 기간별 데이터를 관리합니다.
    • 예를 들어, 주간 리더보드, 월간 리더보드 구현이 가능합니다.
  • 구현 방법:
    1. 점수에 타임스탬프를 추가하여 저장:
      • score = baseScore + timestamp
    2. 기간별 데이터 조회:
      • ZRANGEBYSCORE 명령어로 타임스탬프 범위를 지정하여 데이터 조회. Q : 이렇게 하면 데이터 안꼬이나? 점수와 timestamp를 문자열 붙여서 저장하는데 이걸로 정상 조회가 된다고?

        5. redis 리더보드 시스템 확장하기

5.1 실시간 순위 변동 처리

리더보드 시스템에서 점수는 지속적으로 업데이트됩니다. redis의 Sorted Set과 Pub/Sub 기능을 활용하면 실시간 점수 업데이트와 이벤트 기반 처리를 효율적으로 구현할 수 있습니다.

Action Plan

  • 리더 보드 궁금한거 1개 해보기.

수업 내용 필기 정리.

  • 상업적으로 쓸때는 ttl을 붙여야한다.
  • 일주일이내 top5의 플레이어를 출력하고 싶다 ? -> ttl일 1주일로 두고, 점수를 저장하는 방식도 가능.
  • 기사님이 수락 -> 내폰 : 지도창이 뜬다
  • pubsub에 대한 설명
    • pubsub은 순서 보장 X
    • 즉시 이벤트 전달.
    • 레디스 장애시 이벤트 소실
    • 구독을 유지할 필요가 없다.
  • 배달음식을 주문했다 -> 배달 알림 채널 구독 시작.
  • 배달 완료 -> 배달알림 채널 구독 종료
  • 그렇다면 클라이언트는 레디스(이벤트 브로커)랑 보통 어떻게 연결되나?
    • 소켓서버를 통해서 연결함. 소켓서버에서 받아서 클라이언트에 전달하는 방식.
  • 쓰레드 풀 : 쓰레드를 미리 풀에 생성해놓고 필요할때 가져다 쓰고 반납함.
    • 요청 처리 쓰레드 풀, 서블릿쓰레드 풀
    • db커넥션 풀 https://chatgpt.com/share/678a5b75-299c-8011-8cd6-d75607b9eece
This post is licensed under CC BY 4.0 by the author.