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

bluebamus님의 프로필 이미지

작성한 질문수

실전! Redis 활용

String - Fixed Window Rate Limiter(비율 계산기)

String - Fixed Window Rate Limiter(비율 계산기) 에 질문 드립니다.

해결된 질문

24.07.05 17:35 작성

·

84

0

1.1.1.1:10 으로 key가 만들어 졌을 때, 만료가 11분이 되는건가요?

설명에는 10분에서 11분까지로 알려주시던데

20이라는 요청 제한 수는 프로그램에서 관리하는 수가 되는거죠?

다이어 그림에

expire 1.1.1.1:10 60 / exec 의 의미는 무엇인가요?

답변 1

0

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

2024. 07. 05. 17:55

안녕하세요. 예제 상황에서 사용자의 IP가 1.1.1.1이라고 가정했을 때, 분 단위의 요청 횟수를 제한하기 위해서 10분에서 11분 사이의 요청 횟수를 1.1.1.1:10 키로 갖는 string 타입의 캐시를 추가하였습니다.

 

20이라는 값은 이미 해당 IP로 10분에서 11분 사이에 20번의 클라이언트 요청이 발생한 것을 의미합니다. (이 부분은 예제에서 0초에 첫 요청이 오는 것처럼 설명이 되어 있어서 헷갈리셨을 것 같네요)

 

만약 서버에서 IP 별로 분당 20회의 요청만 허용하기로 했다면, 21번째 요청부터는 에러를 발생시키면 되고, 아직 20번째 요청이 발생하기 전에는 새로운 요청마다 INCR 명령어를 통해서 값을 1 증가 시켜서 해당 값을 관리하면 됩니다.

 

MULTI부터 EXEC까지는 그 사이에 있는 INCR, EXPIRE 두 개의 명령을 한 번에 적용하기 위해서 transaction을 사용하는 명령어입니다.

 

EXPIRE 1.1.1.1:10 60을 통해서 해당 키를 60초 이후에 만료 시키는 이유는 60초 이후인 11분 부터는 해당 캐시값이 더 이상 필요하지 않아서 데이터를 삭제하기 위함입니다.

 

bluebamus님의 프로필 이미지
bluebamus
질문자

2024. 07. 05. 22:50

쉽게 이해가 되었습니다 감사합니다.

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

2024. 07. 05. 23:07

도움이 되었다니 다행입니다 :)