真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

java操作redis中如何使用expire模擬指定時間段內(nèi)限制ip訪問的次數(shù)

java操作redis中如何使用expire模擬指定時間段內(nèi)限制ip訪問的次數(shù),很多新手對此不是很清楚,為了幫助大家解決這個難題,下面小編將為大家詳細講解,有這方面需求的人可以來學習下,希望你能有所收獲。

惠濟網(wǎng)站建設公司創(chuàng)新互聯(lián)建站,惠濟網(wǎng)站設計制作,有大型網(wǎng)站制作公司豐富經(jīng)驗。已為惠濟上千提供企業(yè)網(wǎng)站建設服務。企業(yè)網(wǎng)站搭建\成都外貿(mào)網(wǎng)站制作要多少錢,請找那個售后服務好的惠濟做網(wǎng)站的公司定做!

        首先加入maven依賴,使用JUinit做單元測試。

			   				
  	redis.clients
	jedis
	2.7.0
    
  	
    
      junit
      junit
      3.8.1
      test
    

        redisutil類,創(chuàng)建一個線程池,可以返回redis連接資源以及釋放資源

/**
 * redis工具類,從redis鏈接池中獲取一個鏈接資源
 * @author Hades
 * time:2015年12月14日
 */
public class RedisUtils {
	//定義連接池
	public static JedisPool pool = null;
	/**
	 * 獲取鏈接資源
	 * @return
	 */
	public static synchronized Jedis getJedis() {
		if(pool==null){
			JedisPoolConfig jedisPoolConfig = new JedisPoolConfig();
			jedisPoolConfig.setMaxTotal(100);//最大連接數(shù)
			jedisPoolConfig.setMaxIdle(10);
			jedisPoolConfig.setMaxWaitMillis(1000);//類似于超時時間
			jedisPoolConfig.setTestOnBorrow(true);
			pool = new JedisPool(jedisPoolConfig,"192.168.57.133",6379);//創(chuàng)建連接池
		}
		
		Jedis jedis = pool.getResource();
		return jedis;
	}
	/**
	 * 釋放鏈接資源
	 * @param jedis
	 */
	public static void returnJedis(Jedis jedis) {
		pool.returnResourceObject(jedis);
	}

    redis客戶端類,使用的是juinit做單元測試哈

/**
 * redis測試類
 * @author Hades
 *
 */
public class RedisTest {
	static Jedis jedis =RedisUtils.getJedis();
	@Test
	public void test3() throws Exception {
		String ip ="192.168.57.2";//訪問的ip
		//測試
		for (int i = 0; i < 20; i++) {
			boolean flag = testLogin(ip);
			System.out.println(flag);
		}
	}
	/**
	 * 模擬限制ip指定時間段內(nèi)訪問次數(shù)
	 * @param ip
	 * @return
	 */
	public boolean testLogin(String ip) {
		String value = jedis.get(ip);
		if(value==null){
			jedis.set(ip, "1");
			jedis.expire(ip, 60);//設置過期時間60秒
			return true;
		}else{
			int parseInt = Integer.parseInt(value);
			//60秒內(nèi)訪問超過10次,就禁止訪問
			if(parseInt>10){
				System.out.println("訪問受限!?。。?);
				return false;
			}
			
			jedis.incr(ip);
		}
		
		return true;
	} 
	
	/**
	 * 不使用管道 向jedis插入一萬條數(shù)據(jù)消耗時間:3184
	 */
	@Test
	public void test2() throws Exception{
		// TODO Auto-generated method stub
		long start = System.currentTimeMillis();
		for (int i = 0; i < 10000; i++) {
			jedis.set("a"+i, i+"");
			jedis.expire("a"+i, 60);
		}
		
		System.out.println(System.currentTimeMillis()-start);
	}
	/**
	 * 使用管道命令批量導入數(shù)據(jù) 所需時間:204
	 * @throws Exception
	 */
	@Test
	public void test4() throws Exception {
		long start = System.currentTimeMillis();
		Pipeline pipelined = jedis.pipelined();
		for (int i = 0; i < 10000; i++) {
			pipelined.set("a"+i, i+"");
			pipelined.expire("a"+i, 60);
		}
		pipelined.sync();
		System.out.println(System.currentTimeMillis()-start);
	}
}

看完上述內(nèi)容是否對您有幫助呢?如果還想對相關知識有進一步的了解或閱讀更多相關文章,請關注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝您對創(chuàng)新互聯(lián)的支持。


分享標題:java操作redis中如何使用expire模擬指定時間段內(nèi)限制ip訪問的次數(shù)
文章分享:http://weahome.cn/article/gcgihi.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部