java操作复述中如何使用到期模拟指定时间段内限制ip访问的次数

  

java操作复述中如何使用到期模拟指定时间段内限制ip访问的次数,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。

,,,,,,首先加入maven依赖,使用JUinit做单元测试。

 & lt; dependency>,,
  ,,& lt; groupId> redis.clients
  & lt; artifactId> jedis
  & lt; version> 2.7.0
  ,,,& lt;/dependency>
  ,,
  ,,,& lt; dependency>
  ,,,,,& lt; groupId> junit
  ,,,,,& lt; artifactId> junit
  ,,,,,& lt; version> 3.8.1
  ,,,,,& lt; scope> test
  ,,,& lt;/dependency> 



,,,,,,redisutil类,创建一个线程池,可以返回复述,连接资源以及释放资源


/* *
  ,*复述,工具类,从复述,链接池中获取一个链接资源
  ,* @author 地狱
  *大敌;时间:2015年12月14日
  ,*/public  class  RedisUtils  {//定义连接池
  public  static  JedisPool  pool =,空;/* *
  ,*获取链接资源
  ,* @return
  ,*/public  static  synchronized  Jedis  getJedis (), {
  如果池==null) {
  JedisPoolConfig  JedisPoolConfig =, new  JedisPoolConfig ();
  jedisPoolConfig.setMaxTotal(100);//最大连接数
  jedisPoolConfig.setMaxIdle (10);
  jedisPoolConfig.setMaxWaitMillis(1000);//类似于超时时间
  jedisPoolConfig.setTestOnBorrow(真正的);
  时间=pool  new  JedisPool (jedisPoolConfig,“192.168.57.133", 6379);//创建连接池
  }
  
  Jedis  Jedis =, pool.getResource ();
  return 能;
  }/* *
  ,*释放链接资源
  ,* @param 能
  ,*/public  static  void  returnJedis (Jedis 能),{
  pool.returnResourceObject(能);
  }



,,复述,客户端类,使用的是juinit做单元测试哈


/* *
  ,*复述,测试类
  ,* @author 地狱
  ,*
  ,*/public  class  RedisTest  {
  static  Jedis  Jedis =RedisUtils.getJedis ();
  @Test
  public  void  test3 (), throws  Exception  {
  String  ip =?92.168.57.2"//访问的ip//测试
  for  (int 小姐:=,0;,小姐:& lt;, 20;,我+ +),{
  boolean  flag =, testLogin (ip);
  System.out.println(国旗);
  }
  }/* *
  ,*模拟限制ip指定时间段内访问次数
  ,* @param  ip
  ,* @return
  ,*/public  boolean  testLogin (String  ip), {
  String  value =, jedis.get (ip);
  如果(value=https://www.yisu.com/zixun/=null) {
  能。组(ip, " 1 ");
  能。到期(ip、60);//设置过期时间60秒
  返回true;
  其他}{
  int方法=Integer.parseInt(价值);//60秒内访问超过10次,就禁止访问
  如果方法> 10){
  System.out.println(“访问受限! ! ! !”);
  返回错误;
  }
  
  jedis.incr (ip);
  }
  
  返回true;
  }/* *
  *不使用管道向能插入一万条数据消耗时间:3184年
  */@Test
  公共空间test2()抛出异常{//TODO自动生成方法存根
  长开始=System.currentTimeMillis ();
  for (int i=0;我<10000;我+ +){
  能。集(a +我+ " ");
  能。到期(“a”+ i, 60);
  }
  
  System.out.println (System.currentTimeMillis()实体法);
  }/* *
  *使用管道命令批量导入数据所需时间:204年
  * @throws例外
  */@Test
  公共空间test4()抛出异常{
  长开始=System.currentTimeMillis ();
  管道管线式=jedis.pipelined ();
  for (int i=0;我<10000;我+ +){
  管线式。集(a +我+ " ");
  管线式。到期(“a”+ i, 60);
  }
  pipelined.sync ();
  System.out.println (System.currentTimeMillis()实体法);
  }
  }

看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注行业资讯频道,感谢您对的支持。

java操作复述中如何使用到期模拟指定时间段内限制ip访问的次数