Données de baseAPI

Limitation de débit

Des limites de débit atomiques, côté serveur. GCRA en une commande, ou des limiteurs nommés à fenêtre glissante, token bucket ou leaky bucket. Aucun Lua requis.

commande atomique par requête
1
algorithmes
4
script Lua
0
Étape 1 sur 5
Autorisé

10 requêtes par minute pour l'utilisateur 42. La réponse indique l'autorisation, la limite et le nombre restant.

Session d’exempleplaying
# Autorisé
hotkv> GCRA.LIMIT ratelimit:user:42 60000 10
1) (integer) 0
2) (integer) 10
3) (integer) 9
4) (integer) -1
5) (integer) 6000

Une démonstration animée avec de vraies commandes HotKV et des exemples de réponses. Cliquez sur une étape pour y accéder directement. Les commandes et les réponses restent en anglais, exactement comme vous les saisissez et les voyez dans HotKV.

Le problème

Une API sans limites n'est qu'à un client défaillant d'une panne. Faire la vérification dans le code de l'application implique une lecture, un calcul et une écriture, et des requêtes simultanées se glissent entre les deux. Beaucoup d'équipes finissent par maintenir un script Lua rien que pour rendre l'opération atomique.

Comment HotKV s'en charge

GCRA.LIMIT décide et enregistre en une étape, si bien que deux clients simultanés ne peuvent pas passer tous les deux sur le même état, et la limite se recharge de façon fluide au lieu de se réinitialiser aux bornes d'une fenêtre. Pour les limites que vous gérez par nom, RATELIMIT.CREATE crée un limiteur à fenêtre glissante, token bucket ou leaky bucket, avec des statistiques sur ce qu'il a autorisé et refusé.

Étape par étape

Ce qui se passe, commande par commande

  1. 01

    Autorisé

    10 requêtes par minute pour l'utilisateur 42. La réponse indique l'autorisation, la limite et le nombre restant.

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

    Une rafale venant d'un bot

    Le scraper épuise sa marge de rafale, puis on lui indique combien de temps attendre. Une requête refusée ne change rien.

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

    Limiteur nommé pour une offre

    Les clients de l'offre gratuite ont droit à 100 requêtes par minute sur une fenêtre glissante.

    RATELIMIT.CREATE free_plan 100 60000 ALGO sliding_window
  4. 04

    Requête pondérée

    Un endpoint d'export coûte 20 unités et consomme donc une plus grande part du quota.

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

    Voir ce qu'a fait le limiteur

    Paramètres, clés suivies et totaux des requêtes autorisées et refusées.

    RATELIMIT.STATS free_plan
Où cela s'applique

Scénarios concrets

API publiques

Chaque clé d'API reçoit une limite selon son offre, avec des rafales pour les clients corrects et un Retry-After précis pour les autres.

Formulaires de connexion et d'inscription

Les tentatives par IP et par compte sont limitées pour freiner le credential stuffing.

Appels sortants

Les appels vers une API partenaire ou un fournisseur LLM restent sous leur quota, sur l'ensemble des workers de la flotte.

Intégré

Ce que vous obtenez

GCRA en une commande

Recharge fluide avec rafales, vérification et mise à jour atomiques, délai de nouvel essai en cas de refus.

GCRA.LIMITGCRA.RESET

Limiteurs nommés

Fenêtre glissante, token bucket ou leaky bucket, créés une fois et vérifiés par clé.

RATELIMIT.CREATERATELIMIT.CHECK

Requêtes pondérées

Les appels coûteux peuvent compter pour plusieurs requêtes. GCRA.LIMIT prend un nombre, RATELIMIT.CHECK un COST.

COST

Statistiques

Totaux des requêtes autorisées et refusées par limiteur.

RATELIMIT.STATS

Questions fréquentes

Ai-je besoin d'un script Lua pour limiter le débit ?

Non. GCRA.LIMIT comme RATELIMIT.CHECK effectuent toute la vérification en une seule commande atomique.

Lequel utiliser ?

GCRA.LIMIT ne demande aucune configuration et fonctionne avec toutes les offres. Les limiteurs nommés RATELIMIT.* ajoutent le choix de l'algorithme et des statistiques, et font partie des offres Performance et Scale.

Combien coûte une requête refusée ?

Rien. Un appel GCRA refusé laisse le limiteur inchangé, et un client qui réessaie n'est pas pénalisé davantage.

Cas d'usage associés

Essayez-le sur votre propre charge de travail

HotKV parle le protocole Redis. Vous pouvez donc y connecter un client existant et exécuter ces mêmes commandes.