인프런 커뮤니티 질문&답변

낌상님의 프로필 이미지
낌상

작성한 질문수

실전! Redis 활용

Sorted Set - Sliding Window Rate Limiter(비율 계산기)

Sliding Window Rate Limiter에 대한 질문

해결된 질문

작성

·

295

0

예시 그림을 보면 새로운 요청을 add할때 ZADD 1.1.1.1 1693494130 1693494130 형식으로 add를 하던데 이러면 혹시 동일한 timestamp에 여러번 요청이 올 경우는 어떻게 구분하나요? 가령 1693494130에 3번의 요청이 동시에 발생한다면 스코어는 1693494130로 하고 item을 1693494130_0이런식으로 index를 추가해야할 것 같아서요

답변 1

0

신동현님의 프로필 이미지
신동현
지식공유자

안녕하세요! 해당 부분은 sliding window의 특성을 쉽게 설명하기 위해서 지적해주신 부분처럼 초당 중복요청을 무시하게 설계되어 있습니다.

가장 쉽게 중복 문제를 개선하는 방법은 unix timestamp를 microsecond 단위로 생성하는 방법이 있을 것 같습니다. 초당 중복 요청에 비해 microsecond 단위의 중복 요청은 상대적으로 적을 것이기 때문입니다.

그런데 microsecond에서도 중복이 발생할 수 있기 때문에 추가적으로 member 이름 뒤에 임의의 값을 추가하여 microsecond 단위의 중복까지도 제거할 수 있을 것 같습니다.

제안해주신 방법처럼 sequential한 index를 추가하는 것도 좋은 방법이지만, index를 카운팅하기 위한 별도의 작업이 필요하기 때문에 간단하게 random value를 추가하여 좀 더 간단하게 개선 가능할 것 같습니다.

좋은 질문 주셔서 감사합니다!

낌상님의 프로필 이미지
낌상

작성한 질문수

질문하기