1:redis 限流功能
1:首先设置对应的key值计数,然后给key设置对应的过期时间 2:每次调用对应的接口的时候获取对应的计数器实现对应的数据计数功能,然后在比较过期时间。
使用场景:、
1:在一定的时间内对于账号不能重复登录多少次实现对应的数据限制
2:可以实现对应的登录错误不能够实现再次登录逻辑与数据库相结合。
代码如下:
DataReturnResult dataBack=new DataReturnResult();
String limitData=jedisUtil.get(dataKeyCount,CommonConstant.REDIS_INDEX);
if(StringUtils.isNotEmpty(limitData)) {
Integer countExist = Integer.parseInt(limitData) ;
Long expireTimes = jedisUtil.ttl(dataKeyCount,CommonConstant.REDIS_INDEX) ;
if(expireTimes>-1) {
if(countExist>5) {
dataBack.setDesc("LimitCount没秒超过10次访问,返回错误");
dataBack.setData(countExist);
return dataBack;
}else {
String count = String.valueOf(countExist+1);
jedisUtil.incr(dataKeyCount);
dataBack.setData(count);
return dataBack;
}
}else {
jedisUtil.set(dataKeyCount,"1",0);
jedisUtil.expire(dataKeyCount,180, CommonConstant.REDIS_INDEX);
dataBack.setDesc("LimitCount超时,删除后,创建LimitCount=1");
dataBack.setData(1);
return dataBack;
}
}else {
jedisUtil.set(dataKeyCount,"1",0);
jedisUtil.expire(dataKeyCount,180, CommonConstant.REDIS_INDEX);
dataBack.setDesc("LimitCount不存在,创建LimitCount=1");
dataBack.setData(1);
return dataBack;
}
}
redis实现分布式锁代码:
https://www.cnblogs.com/williamjie/p/9395659.html