Implementing rate limiting

There are so many simple and direct ways you can implement rate limiting. One of the most common and easy ways to do so is to use internal caching on the server.

Another implementation we can use is Redis, which utilizes rate limit patterns as follows:

FUNCTION LIMIT_API_CALL(ip) 
ts = CURRENT_UNIX_TIME() 
keyname = ip+":"+ts 
current = GET(keyname) 
IF current != NULL AND current > 10 THEN 
    ERROR "too many requests per second" 
ELSE 
    MULTI 
        INCR(keyname,1) 
        EXPIRE(keyname,10) 
    EXEC 
    PERFORM_API_CALL() 
END 

Basically, we have a counter for every IP, for every seconds. But these counters are always incremented, setting an expiry time of 10 seconds, so that they'll be removed by Redis automatically when the current second changes. ...

Get Mastering Spring Boot 2.0 now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.