Token bucket vs sliding window vs fixed window algorithms. Distributed rate limiting with Redis. Edge cases.