需求是限制IP频繁访问某接口,用的方案是使用redis记录访问IP的值,先设定好初始值,每次访问自增,达到某限定值后,进行阻止。
用的是自定义工具类,使用spring封装的spring-data-redis进行操作,在对某key进行increment()方法时,报错:
redis ERR value is not an integer or out of range
代码逻辑如下:
Integer count = (Integer) redisUtil.get(ipAddress);//取得key的value
if (count == null){
redisUtil.set(ipAddress,1,10);
return false;
}else if(count == 3){
return false;
}else {
redisUtil.incr(ipAddress,1);
return false;
}