基于Redis的限流器的实现
2020-06-09 05:20
381 查看
1.概述
系统中的接口通常都有限流,比如 70次/秒 ,如何保证我们的接口的调用次数在超过第三方接口限流的时候快速失败呢?这时候就需要限流器了。下面是笔者用redis实现限流器的流程图。
2.代码
[code]/** * 获取限流权限 * @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; }
---------------------
作者:秦霜
来源:CSDN
原文:https://blog.csdn.net/wang258533488/article/details/78913827
版权声明:本文为博主原创文章,转载请附上博文链接!
相关文章推荐
- 基于Redis的限流器的实现(示例讲解)
- 基于Redis的限流器的实现
- 基于Redis实现分布式锁
- 基于Redis实现Apache和Tomcat集群的Session共享配置
- 基于Redis Lua脚本实现的分布式锁 | 日拱一卒
- 分布式锁与实现(一)——基于Redis实现(转载)
- 【转载】基于Redis实现分布式锁
- 想知道谁是你的最佳用户?基于Redis实现排行榜周期榜与最近N期榜
- 基于redis实现的扣减库存
- 基于redis的高并发秒杀的JAVA-DEMO实现!
- 游戏任务成就体系的实现(附七):成就系统基于Redis的数据库访问设计实现
- 基于Redis实现分布式锁
- 基于Jedis实现Redis分片的理解
- 基于redis 实现分布式锁(二)
- 使用springboot基于redis实现获得手机验证码之后进行对比demo
- 基于redis的分布式锁实现
- Redis 高可用 基于Sentinel + keepalived 实现
- 基于Redis实现分布式锁
- Redis分布式锁 基于GETSET SETNX REDISSON 的实现
- 分布式锁与实现(一)——基于Redis实现