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()实体法); } }
看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注行业资讯频道,感谢您对的支持。