Публичные API
Каждый ключ API получает лимит по тарифу, со всплесками для добросовестных клиентов и точным Retry-After для остальных.
Атомарные ограничения на стороне сервера. GCRA одной командой или именованные ограничители со скользящим окном, token bucket или leaky bucket. Lua не нужен.
10 запросов в минуту для пользователя 42. Ответ сообщает, разрешено ли, лимит и сколько осталось.
Анимированная демонстрация с настоящими командами HotKV и примерами ответов. Нажмите на любой шаг, чтобы перейти к нему. Команды и ответы остаются на английском, ровно так, как вы вводите и видите их в HotKV.
API без ограничений в одном шаге от сбоя из-за одного неправильно ведущего себя клиента. Проверка в коде приложения означает чтение, вычисление и запись, и параллельные запросы проскальзывают между ними. Многим командам в итоге приходится поддерживать скрипт Lua только ради атомарности.
GCRA.LIMIT принимает решение и записывает его за один шаг, поэтому параллельные клиенты не могут оба пройти по одному состоянию, а лимит восстанавливается плавно, а не сбрасывается на границах окон. Для лимитов, которыми вы управляете по имени, RATELIMIT.CREATE создаёт ограничитель со скользящим окном, token bucket или leaky bucket со статистикой разрешённого и отклонённого.
10 запросов в минуту для пользователя 42. Ответ сообщает, разрешено ли, лимит и сколько осталось.
GCRA.LIMIT ratelimit:user:42 60000 10Скрапер исчерпывает допустимый всплеск, и ему сообщают, сколько ждать. Отклонённый запрос ничего не меняет.
GCRA.LIMIT ratelimit:bot:7 60000 10Клиенты бесплатного тарифа получают 100 запросов в минуту на скользящем окне.
RATELIMIT.CREATE free_plan 100 60000 ALGO sliding_windowКонечная точка экспорта стоит 20 единиц, поэтому расходует больше лимита.
RATELIMIT.CHECK free_plan customer:881 COST 20Настройки, отслеживаемые ключи и итоги разрешённых и отклонённых запросов.
RATELIMIT.STATS free_planКаждый ключ API получает лимит по тарифу, со всплесками для добросовестных клиентов и точным Retry-After для остальных.
Попытки на IP и на аккаунт ограничиваются, чтобы замедлить подбор учётных данных.
Вызовы API партнёра или провайдера LLM удерживаются в пределах их квоты на всех воркерах парка.
Плавное восстановление со всплесками, атомарная проверка и обновление, время повтора при отказе.
GCRA.LIMITGCRA.RESETСкользящее окно, token bucket или leaky bucket, создаются один раз и проверяются по ключу.
RATELIMIT.CREATERATELIMIT.CHECKДорогие вызовы могут считаться несколькими запросами. GCRA.LIMIT принимает количество, RATELIMIT.CHECK - COST.
COSTИтоги разрешённых и отклонённых запросов по каждому ограничителю.
RATELIMIT.STATSНет. И GCRA.LIMIT, и RATELIMIT.CHECK выполняют всю проверку как одну атомарную команду.
GCRA.LIMIT не требует настройки и работает на любом тарифе. Именованные ограничители RATELIMIT.* добавляют выбор алгоритма и статистику и входят в тарифы Performance и Scale.
Ничего. Отклонённый вызов GCRA оставляет ограничитель без изменений, поэтому клиент, который повторяет попытку, не наказывается дополнительно.
HotKV понимает протокол Redis, поэтому вы можете подключить к нему существующий клиент и выполнить те же команды.