Un control de frecuencia de acceso simple basado en redis

Ideas:

1 Registro del número de visitas por minuto de una dirección IP

Registre la cantidad de llamadas a una IP en redis con IP + minuto actual como clave, y el tiempo de caducidad de la caché es 60.

2 Restringir llamadas

Si el valor de [1] excede el umbral, escriba un par clave-valor con ip + limited como clave en redis, y el tiempo de caducidad de la caché es el tiempo en que esta IP no puede llamar a la API, como 100 segundos.

Cuando se llama a la API, se juzga si el par clave-valor de ip + limited existe en redis y, de ser así, se devuelve el código de error de frecuencia limitada.

Código falso:

bool isLimted(String ip) {

    
    // 用来判断是否IP 受限的KEY
    String attackRejectKey = "attackReject:" + ip;
    
    // 判断 redis 是否存在  attackRejectKey
    if  redis.get(attackRejectKey)
       return true

    // 用来记录IP 一分钟内访问次数的KEY
    int minute = 获取当前时间的分钟字段
    String requestCountKey = "requestCount:" + ip + ":" + minutes;
    
    // 判断 redis 是否存在  requestCountKey
    Count = redis.get(requestCountKey)
    Count++
    if  Count > 阈值
        redis.set(attackRejectKey, 缓存一段时间)
        return false
    else
        redis.set(requestCountKey, Count)
        return true
}

 

Supongo que te gusta

Origin blog.csdn.net/wuzhong8809/article/details/107227784
Recomendado
Clasificación