redis实现同一ip接口请求限制

pom 依赖
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
</dependency>

application.yml

redis:
port: 6379
password:
host: 127.0.0.1
jedis:
pool:
max-idle: 6 #最大空闲数
max-active: 10 #最大连接数
min-idle: 2 #最小空闲数
timeout: 5000

代码实现

  需要拦截的请求

  //获取请求ip

String ip = getIpRequest(request);
//设置redis 的key
String key = "reqIP:"+ip;
redis的incrBy方法自动累加器如果key为空默认返回0
Long count = redisCacheUtil.incrBy(key, 1);
if(count == 1){
   //设置key的过期时间
redisCacheUtil.set(key,60);
}else if(count>10){
   //60秒内如果请求超过10次抛出异常
throw new RuntimeException("操作频繁,请稍后重试!");
}
以上拦截请求操作可以在aop内实现


posted @ 2022-06-25 10:53  一个追求未知的人  阅读(183)  评论(0)    收藏  举报