Sliding window rate limiting

Switched the algorithm to use a circular buffer
based on a redis list