KärndataAPI:er

Hastighetsbegränsning

Atomära hastighetsgränser på serversidan. GCRA i ett kommando, eller namngivna begränsare med glidande fönster, token bucket eller leaky bucket. Ingen Lua krävs.

atomärt kommando per förfrågan
1
algoritmer
4
Lua-skript
0
Steg 1 av 5
Tillåten

10 förfrågningar per minut för användare 42. Svaret anger tillåten, gränsen och hur många som återstår.

Exempelsessionplaying
# Tillåten
hotkv> GCRA.LIMIT ratelimit:user:42 60000 10
1) (integer) 0
2) (integer) 10
3) (integer) 9
4) (integer) -1
5) (integer) 6000

En animerad genomgång med riktiga HotKV-kommandon och exempelsvar. Klicka på valfritt steg för att hoppa dit. Kommandon och svar förblir på engelska, precis som du skriver och ser dem i HotKV.

Problemet

Ett API utan gränser är en enda illa fungerande klient från ett avbrott. Att göra kontrollen i applikationskoden innebär en läsning, en beräkning och en skrivning, och samtidiga förfrågningar slinker igenom mellan stegen. Många team slutar med att underhålla ett Lua-skript bara för att göra det atomärt.

Så löser HotKV det

GCRA.LIMIT avgör och registrerar i ett enda steg, så att samtidiga klienter inte båda kan passera på samma tillstånd, och gränsen fylls på jämnt i stället för att nollställas vid fönstergränser. För gränser du hanterar med namn skapar RATELIMIT.CREATE en begränsare med glidande fönster, token bucket eller leaky bucket, med statistik över vad den tillät och nekade.

Steg för steg

Vad som händer, kommando för kommando

  1. 01

    Tillåten

    10 förfrågningar per minut för användare 42. Svaret anger tillåten, gränsen och hur många som återstår.

    GCRA.LIMIT ratelimit:user:42 60000 10
  2. 02

    Ett skov från en bot

    Skrapan förbrukar sin burstkvot och får sedan veta hur länge den ska vänta. En nekad förfrågan ändrar ingenting.

    GCRA.LIMIT ratelimit:bot:7 60000 10
  3. 03

    Namngiven begränsare för en plan

    Kunder på gratisplanen får 100 förfrågningar i minuten i ett glidande fönster.

    RATELIMIT.CREATE free_plan 100 60000 ALGO sliding_window
  4. 04

    Viktad förfrågan

    En exportslutpunkt kostar 20 enheter, så den förbrukar mer av kvoten.

    RATELIMIT.CHECK free_plan customer:881 COST 20
  5. 05

    Se vad begränsaren gjorde

    Inställningar, spårade nycklar och totalsiffror för tillåtna och nekade förfrågningar.

    RATELIMIT.STATS free_plan
Där det passar

Verkliga scenarier

Offentliga API:er

Varje API-nyckel får en gräns per plan, med bursts för välskötta klienter och ett exakt Retry-After för resten.

Inloggnings- och registreringsformulär

Försök per IP och per konto begränsas för att bromsa credential stuffing.

Utgående anrop

Anrop till ett partner-API eller en LLM-leverantör hålls under deras kvot över alla arbetare i flottan.

Inbyggt

Det här får du

GCRA i ett kommando

Mjuk påfyllning med bursts, atomär kontroll och uppdatering, och en återförsökstid vid nekande.

GCRA.LIMITGCRA.RESET

Namngivna begränsare

Glidande fönster, token bucket eller leaky bucket, skapade en gång och kontrollerade per nyckel.

RATELIMIT.CREATERATELIMIT.CHECK

Viktade förfrågningar

Dyra anrop kan räknas som flera förfrågningar. GCRA.LIMIT tar ett antal, RATELIMIT.CHECK en COST.

COST

Statistik

Totalsiffror för tillåtna och nekade per begränsare.

RATELIMIT.STATS

Vanliga frågor

Behöver jag ett Lua-skript för hastighetsbegränsning?

Nej. Både GCRA.LIMIT och RATELIMIT.CHECK gör hela kontrollen som ett enda atomärt kommando.

Vilken ska jag använda?

GCRA.LIMIT kräver ingen konfiguration och fungerar i alla planer. Namngivna begränsare med RATELIMIT.* ger ett val av algoritm och statistik, och ingår i planerna Performance och Scale.

Vad kostar en nekad förfrågan?

Ingenting. Ett nekat GCRA-anrop lämnar begränsaren oförändrad, så en klient som försöker igen straffas inte ytterligare.

Relaterade användningsfall

Prova på din egen arbetslast

HotKV talar Redis-protokollet, så du kan peka en befintlig klient mot det och köra samma kommandon.