天天看點

java-redis限流(RedissonClient-AtomicLong,自增原子操作)

1.流程邏輯-建立key-過期時間,擷取key值超過一定限制進行異常傳回,否在正常通路,并且自增key值

//	@Test
	public void limitQuery() throws InterruptedException {
		
		for (int i = 0; i < 1000; i++) {
			long st=DateUtil.currentTimeMilliSeconds();
			long atomicLong=redisCRUD.getAtomicLong("redpackt");
			System.out.println("通路次數"+atomicLong);
			if(atomicLong==0) {
				redisCRUD.setAtomicLong("redpackt", 1, 5);
			}else if(atomicLong>=100&&atomicLong<500) {
				System.out.println("通路頻繁");
				redisCRUD.addAtomicLong("redpackt", 1);
			}else if(atomicLong>=200){//處理過期時間失效問題
				redisCRUD.setAtomicLong("redpackt", 1, 5);
			}else {
				long addAtomicLong = redisCRUD.addAtomicLong("redpackt", 1);
			}
			System.out.println((DateUtil.currentTimeMilliSeconds()-st)+"毫秒");
			
		}
	}