Реализация RateLimiter с Sliding Window на Yii и Redis

Sliding window rate limiter, в отличие от fixed window, ограничивает запросы в рамках скользящего временного окна, обеспечивая более точный контроль. Это позволяет избежать ситуаций, когда запросы, находящиеся на границе фиксированных окон, могут суммарно превышать лимиты.
Реализация RateLimiter с Sliding Window на Yii и Redis
Изображение носит иллюстративный характер

Предложенный подход использует Redis с сортированными множествами, где временные метки микросекунд служат как значения, так и ключи. При каждом запросе происходит удаление устаревших меток и добавление текущей, с последующей проверкой на превышение лимита.

Хранение запросов в Redis происходит в виде сортированных множеств с временными метками, хотя для оптимизации, особенно при высокой частоте запросов, целесообразно использовать обычные списки Redis с добавлением в начало и удалением из конца, поскольку данные всегда добавляются с увеличивающимися временными метками. При этом нужно помнить, что zadd гарантирует уникальность в рамках member'а. Использование микросекунд снижает вероятность перезаписи.


Новое на сайте

20327Кости прерий: как истребление бизонов породило целую индустрию — и сама себя же уничтожила 20326Кто и зачем взламывает серверы Ollama и ComfyUI ради ключей от AWS? 20325Как злоумышленники спрятали командный сервер внутри блокчейна и почему его невозможно... 20324Брюссель заставляет Android делиться секретами с чужими ИИ-помощниками 20323WordPress: как два бага слились в одну критическую дыру, которую назвали wp2shell 20322Как китайские хакеры обманули DigiCert и украли сертификаты для подписи кода? 20321Что скрывается за уязвимостью, которую агентство США внесло в список активно используемых... 20320Автономные системы наступают быстрее, чем инфраструктура для управления ими: кто выиграет... 20319Почему в OpenSSL нашли дыру, съедающую память серверов, но не дали ей даже номер CVE? 20317SonicWall SMA 1000: как два бага превратили VPN-шлюз в бэкдор для атакующих 20316Может ли уязвимость в клиенте Zoom для Windows открыть доступ к чужому аккаунту без... 20315TELEPUZ: новый вредонос на C, который научился прятаться в Telegram, Steam и блокчейне... 20314Дома из дёрна: как исландцы триста лет прятались от холода под слоем земли и травы 20313Как один токен от чужого сервиса мог впустить злоумышленника в чужой аккаунт n8n?
Ссылка