Design a rate limiter class or middleware. Discuss algorithms like Token Bucket, Leaky Bucket, and Fixed Window. How do you handle distributed rate limiting? (Redis?)