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

338 阅读1分钟

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)+"毫秒");
			
		}
	}