91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

java操作redis中如何使用expire模擬指定時間段內限制ip訪問的次數

發布時間:2021-11-20 17:27:10 來源:億速云 閱讀:231 作者:柒染 欄目:云計算

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

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

<dependency>			   				
  	<groupId>redis.clients</groupId>
	<artifactId>jedis</artifactId>
	<version>2.7.0</version>
    </dependency>
  	
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>3.8.1</version>
      <scope>test</scope>
    </dependency>



        redisutil類,創建一個線程池,可以返回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);//最大連接數
			jedisPoolConfig.setMaxIdle(10);
			jedisPoolConfig.setMaxWaitMillis(1000);//類似于超時時間
			jedisPoolConfig.setTestOnBorrow(true);
			pool = new JedisPool(jedisPoolConfig,"192.168.57.133",6379);//創建連接池
		}
		
		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指定時間段內訪問次數
	 * @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秒內訪問超過10次,就禁止訪問
			if(parseInt>10){
				System.out.println("訪問受限!!!!");
				return false;
			}
			
			jedis.incr(ip);
		}
		
		return true;
	} 
	
	/**
	 * 不使用管道 向jedis插入一萬條數據消耗時間: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);
	}
	/**
	 * 使用管道命令批量導入數據 所需時間: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);
	}
}

看完上述內容是否對您有幫助呢?如果還想對相關知識有進一步的了解或閱讀更多相關文章,請關注億速云行業資訊頻道,感謝您對億速云的支持。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

城口县| 马鞍山市| 苍山县| 永寿县| 曲沃县| 灯塔市| 泗阳县| 大安市| 吉水县| 屏边| 大渡口区| 涡阳县| 八宿县| 双辽市| 绥阳县| 新沂市| 济源市| 耿马| SHOW| 新河县| 阳城县| 瑞昌市| 南宁市| 三门峡市| 庆城县| 合阳县| 马关县| 华亭县| 保山市| 乐业县| 乐安县| 页游| 玉门市| 宣恩县| 扶余县| 松原市| 兴海县| 新密市| 大兴区| 荆门市| 霍州市|