• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    基于Redis的限流器的实现(示例讲解)

    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;
    }

    以上这篇基于Redis的限流器的实现(示例讲解)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。

    您可能感兴趣的文章:
    • 详解Redis实现限流的三种方式
    • 基于Redis实现分布式应用限流的方法
    • redis限流的实际应用
    • redis redisson 限流器的实例(RRateLimiter)
    上一篇:redis源码分析教程之压缩链表ziplist详解
    下一篇:redis 用scan指令 代替keys指令(详解)
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    基于Redis的限流器的实现(示例讲解) 基于,Redis,的,限流,器,实现,