业务需求:
同一项服务,但要求一定时间内有访问次数上限,根据用户等级可访问的次数不一样,当要求时间到了,刷新服务,用户可再次访问
代码实现
/**
* 模拟服务(限定访问次数)
*
* @author fanfan
*/
public class Service {
//用户id
private String id;
//用户可访问次数(根据用户等级而定)
private Integer num;
public Service(String id, Integer num) {
this.id = id;
this.num = num;
}
//控制单元
public void service() {
Jedis jedis = new Jedis("127.0.0.1", 6379);
String value = jedis.get("compid" + id);
try {
//判断用户是否访问过
if (value == null) {
//没有访问过,创建该用户信息;服务每10秒刷新一次
jedis.setex("compid" + id, 10, Long.MAX_VALUE - num + "");
} else {
if ("超级vip".equals(id)) {
//直接调取业务
business();