有时候我们需要限制一个API访问的频率,例如单用户一分钟之内只能访问多少次。
类似于这样的需求很容易用Redis来实现。
@Log("Api接口每分钟访问次数限制")
@AuthIgnore
@PostMapping("getImpose")
public String getImpose(String name) {
String data="";
String num=(String)redisTemplate.opsForValue().get(name);
if(num==null) {
redisTemplate.opsForValue().set(name,"2",60,TimeUnit.SECONDS);
data="第1次访问";
}else if (num=="10"|| "10".equals(num)) {
//1分钟内,连续访问10次的时候,就不让访问
data="访问频繁,一分钟只能访问10次";
return data;
}else {
//每访问一次进行+1
redisTemplate.opsForValue().increment(name, 1);
data="第"+num+"次访问";
}
return data;
}