Redis教程

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

本文主要是介绍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内实现

这篇关于redis实现同一ip接口请求限制的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!