最新下载
热门教程
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
基于Redis的限流器的实现(示例讲解)
时间:2022-06-29 09:19:04 编辑:袖梨 来源:一聚教程网
1 概述
系统中的接口通常都有限流,比如 70次/秒 ,如何保证我们的接口的调用次数在超过第三方接口限流的时候快速失败呢?这时候就需要限流器了。下面是笔者用redis实现限流器的流程图。
2 代码
/**
* 获取限流权限
* @param key
* @param millisecond 毫秒数
* @param limitCount 限流次数
* @return
*/
public static boolean getCurrentLimiting(String key, Long millisecond, Integer limitCount){
try {
boolean currentLimitingLock = RedisDistributeLockUtil.lock(key);
if(currentLimitingLock){
Long llen = RedisClient.llen(getCurrentLimitingRedisKey(key));
if(llen < limitCount){
RedisClient.lpush(getCurrentLimitingRedisKey(key), DateUtil.current(false) + "");
return true;
}else{
Long lastTime = Long.parseLong(RedisClient.lindex(getCurrentLimitingRedisKey(key), -1));
if((DateUtil.current(false) - lastTime) >= millisecond){
RedisClient.lpush(getCurrentLimitingRedisKey(key), DateUtil.current(false) + "");
RedisClient.ltrim(getCurrentLimitingRedisKey(key), 0, limitCount);
return true;
}
}
}
}finally {
RedisDistributeLockUtil.unlock(key);
}
return false;
}
相关文章
- 光与影33号远征队标记射击:标记射击符文效果及获取方式详解 12-15
- 学信网学历查询入口-学信网个人学历认证官网 12-15
- 女神漫画入口首页精品漫画-女神漫画首页入口热作精选 12-15
- 逃离鸭科夫仓库区图纸在哪 仓库区图纸位置详情 12-15
- 逃离鸭科夫零号区图纸在哪 零号区图纸位置详情 12-15
- 巨量百应官网登录入口-官方网址一键直达 12-15
