When I was building my backend API, I realized a big problem: anyone could spam my endpoints.

If a user repeatedly reloads a page or hits an endpoint calling an external AI service, it can crash the server or run up high API costs.

To fix this, I added Rate Limiting. Here is why I used Redis for it and how I set it up.

The Problem with Simple In-Memory Limiters

At first, I thought about saving request counts in a simple JavaScript object: