redis业务请求控制次数

使用jedis实现不同等级在一定时间内请求次数控制。

package jedis;


import org.junit.Test;

import redis.clients.jedis.Jedis;
import redis.clients.jedis.exceptions.JedisDataException;

public class Demo {
	private String level;
	private int num;
	public Demo(String level,int num) {
		this.level=level;
		this.num=num;
	}
	public void work(String level,long num) {
		 System.out.println("等级:"+level+",业务操作执行第"+num+"次");
	}
	public void service() {
		Jedis jedis = new Jedis("127.0.0.1",6379);
		String value = jedis.get("level:"+level);
		try {
			if (value==null) {
				jedis.setex("level:"+level,20,Long.MAX_VALUE-num+"");
			}else {
				long val = jedis.incr("level:"+level);
				work(level, num-(Long.MAX_VALUE-val));
			}
		} catch (JedisDataException e) {
			System.out.println("使用超限,请升级或等待!");
		}finally {
			jedis.close();
		}
	}
}
class MyTheard extends Thread{
	Demo demo;
	public MyTheard(String level,int num) {
		demo=new Demo(level, num);
	}
	public void run() {
		while (true) {
			try {
				demo.service();
				Thread.sleep(300);
			} catch (InterruptedException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
	}
}

主程序:

public class JedisTest {
		public static void main(String[] args) {
			MyTheard m1=new MyTheard("初级",10);
			MyTheard m2=new MyTheard("高级",30);
			m1.start();
			m2.start();
		}
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值