Ограничитель скорости RedisJAVA

Программисты JAVA общаются здесь
Anonymous
Ограничитель скорости Redis

Сообщение Anonymous »

В официальной документации Redis команда INCR выполняет следующие операции:

Код: Выделить всё

FUNCTION LIMIT_API_CALL(ip)
current = LLEN(ip)
IF current > 10 THEN
ERROR "too many requests per second"
ELSE
IF EXISTS(ip) == FALSE
MULTI
RPUSH(ip,ip)
EXPIRE(ip,1)
EXEC
ELSE
RPUSHX(ip,ip)
END
PERFORM_API_CALL()
END
Официальная документация Redis описывает следующее: Обратите внимание, что здесь есть гонка, но это не проблема: EXISTS может возвращать false, но ключ может быть создан другим клиентом до того, как мы создадим его внутри. блок MULTI/EXEC. Однако эта раса в редких случаях просто пропускает вызов API, поэтому ограничение скорости по-прежнему будет работать правильно.
У меня есть вопрос. Если я одновременно отправлю запросы 1w, не пропустит ли он 9999 запросов? Это все еще работает нормально?
Надеюсь, кто-нибудь сможет решить мою проблему.

Подробнее здесь: https://stackoverflow.com/questions/790 ... te-limiter

Вернуться в «JAVA»