最新下载
热门教程
- 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; }
相关文章
- 最火全球交易所加密货币交易榜单-去中心化币圈交易所币安交易所推荐 06-16
- BALL币注册教程-2025币安交易所账号全攻略 06-16
- 如何入手SNORT币?2025OKX交易所零门槛指南 06-16
- 《石器时代:觉醒》唯一宠物如何 06-16
- 2025盘点正规币圈十大虚拟币交易APP-最火比特币交易app币安推荐 06-16
- 《斗罗大陆:武魂觉醒》心海无垠5-2玩法种类大盘点 06-16