KerndataAPI's

Ratelimiting

Atomaire ratelimieten aan de serverkant. GCRA in één commando, of benoemde limiters met sliding window, token bucket of leaky bucket. Geen Lua nodig.

atomair commando per verzoek
1
algoritmen
4
Lua-scripts
0
Stap 1 van 5
Toegestaan

10 verzoeken per minuut voor gebruiker 42. Het antwoord meldt toegestaan, de limiet en hoeveel er resteren.

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

Een geanimeerde walkthrough met echte HotKV-commando's en voorbeeldantwoorden. Klik op een stap om ernaartoe te springen. Commando's en antwoorden blijven Engels, precies zoals je ze in HotKV typt en ziet.

Het probleem

Een API zonder limieten is één zich misdragende client verwijderd van een storing. De controle in applicatiecode doen betekent een read, een berekening en een write, en gelijktijdige verzoeken glippen door de gaten ertussen. Veel teams onderhouden uiteindelijk een Lua-script alleen om het atomair te maken.

Hoe HotKV het aanpakt

GCRA.LIMIT beslist en legt vast in één stap, zodat gelijktijdige clients niet allebei kunnen passeren op dezelfde status, en de limiet vult vloeiend bij in plaats van bij vensterranden te resetten. Voor limieten die je op naam beheert, stelt RATELIMIT.CREATE een limiter met sliding window, token bucket of leaky bucket in, met statistieken over wat hij toestond en weigerde.

Stap voor stap

Wat er gebeurt, commando voor commando

  1. 01

    Toegestaan

    10 verzoeken per minuut voor gebruiker 42. Het antwoord meldt toegestaan, de limiet en hoeveel er resteren.

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

    Een burst van een bot

    De scraper gebruikt zijn burstruimte op en krijgt dan te horen hoe lang hij moet wachten. Een geweigerd verzoek verandert niets.

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

    Benoemde limiter voor een plan

    Klanten met het gratis plan krijgen 100 verzoeken per minuut op een sliding window.

    RATELIMIT.CREATE free_plan 100 60000 ALGO sliding_window
  4. 04

    Gewogen verzoek

    Een exportendpoint kost 20 eenheden, dus het gebruikt meer van de ruimte.

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

    Zien wat de limiter deed

    Instellingen, gevolgde sleutels en de totalen van toegestane en geweigerde verzoeken.

    RATELIMIT.STATS free_plan
Waar het past

Praktijkscenario's

Openbare API's

Elke API-sleutel krijgt een limiet per plan, met bursts voor goedwillende clients en een precieze Retry-After voor de rest.

Login- en aanmeldformulieren

Pogingen per IP en per account worden beperkt om credential stuffing te vertragen.

Uitgaande aanroepen

Aanroepen naar een partner-API of een LLM-provider blijven onder hun quotum over elke worker in de vloot heen.

Ingebouwd

Wat je krijgt

GCRA in één commando

Vloeiende bijvulling met bursts, atomaire controle en update, een hertijd bij weigering.

GCRA.LIMITGCRA.RESET

Benoemde limiters

Sliding window, token bucket of leaky bucket, eenmaal aangemaakt en per sleutel gecontroleerd.

RATELIMIT.CREATERATELIMIT.CHECK

Gewogen verzoeken

Dure aanroepen kunnen als meerdere verzoeken tellen. GCRA.LIMIT neemt een aantal, RATELIMIT.CHECK een COST.

COST

Statistieken

Totalen van toegestaan en geweigerd per limiter.

RATELIMIT.STATS

Veelgestelde vragen

Heb ik een Lua-script nodig voor ratelimiting?

Nee. Zowel GCRA.LIMIT als RATELIMIT.CHECK doen de hele controle als één atomair commando.

Welke moet ik gebruiken?

GCRA.LIMIT vereist geen setup en werkt op elk plan. Benoemde limiters met RATELIMIT.* voegen een keuze aan algoritmen en statistieken toe en maken deel uit van de plannen Performance en Scale.

Wat kost een geweigerd verzoek?

Niets. Een geweigerde GCRA-aanroep laat de limiter ongewijzigd, dus een client die het opnieuw probeert wordt niet verder gestraft.

Verwante use cases

Probeer het op je eigen workload

HotKV spreekt het Redis-protocol, dus je kunt een bestaande client erop richten en dezelfde commando's uitvoeren.