Redis SortedSet 클래스

문정현·2024년 1월 19일
0

Why Redis?

특정 핫딜에 트래픽이 몰리기 때문에 서버가 다운되거나 원활하지 못한 핫딜 판매가 이루어 지면 안된다.

Redis에서 제공하는 자료구조 중 하나인 Sorted Set을 활용하여 모든 요청이 DB에 바로 부하가 가지 않고 차례대로 일정 범위만큼씩 처리하는 방법이 있다

Sorted Set이란?

일반적으로 Set 자료구조는 저장된 value들을 unique하게 관리하기 위해 사용된다. 이 때 저장된 value들 사이의 순서는 관리되지 않는다.

하지만 Redis에서 제공해주는 자료구조 중 하나인 Sorted Set(또는 ZSET, 둘다 동일한 말이다)은, 이름 그대로 Set의 특성을 그대로 가지면서 추가적으로 저장된 value들의 순서도 관리해준다.

  • Sorted Sets은 key 하나에 여러개의 score와 value로 구성하는 자료구조이다.
  • Value는 score로 sort되며 중복되지 않는다
  • Score가 같으면 value로 sort된다
  • Sorted Sets에서는 집합이라는 의미에서 value를 member라 부른다
  • Sorted Sets은 주로 sort가 필요한 곳에 사용된다

정리하면 한 Key에 여러 value와 score를 가지고 있으며 중복되지 않는 value로 score순으로 데이터를 정렬한다는 것

Sorted Set Key에는 HOTDEAL_EVENT를 설정한다

Value에는 사용자명을 설정(username 혹은 email등 식별가능한 값중 unique한것으로)한다

Score에는 핫딜 구매를 하려는 사람들을 순서대로 정렬하기 위해, 핫딜 이벤트에 참여한 시간을 유닉스 타임(m/s) 값으로 넣어준다.

특정 이벤트에 몰리는 트래픽을 일정 범위 만큼씩(예를 들자면 대기열에서 1초당 10명) 이벤트 참여에 들어가게 되고 이를 통해서 위에서 언급한일정 범위만큼씩 처리를 통한 DB부하 방지 가 가능한 것이다.

reference:
https://jupiny.com/2020/03/28/redis-sorted-set/
https://www.youtube.com/watch?v=MTSn93rNPPE&t=710s

profile
주니어 개발자를 꿈꾸며

0개의 댓글