해결된 질문
24.07.05 17:35 작성
·
84
답변 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분 부터는 해당 캐시값이 더 이상 필요하지 않아서 데이터를 삭제하기 위함입니다.
2024. 07. 05. 22:50
쉽게 이해가 되었습니다 감사합니다.