主頁 > 知識(shí)庫 > 基于Redis的限流器的實(shí)現(xiàn)(示例講解)

基于Redis的限流器的實(shí)現(xiàn)(示例講解)

熱門標(biāo)簽:最簡單的百度地圖標(biāo)注 玄武湖地圖標(biāo)注 竹間科技AI電銷機(jī)器人 地圖標(biāo)注費(fèi)用 地圖標(biāo)注如何即時(shí)生效 小紅書怎么地圖標(biāo)注店 百度商家地圖標(biāo)注怎么做 太原營銷外呼系統(tǒng) 西藏教育智能外呼系統(tǒng)價(jià)格

1 概述

系統(tǒng)中的接口通常都有限流,比如 70次/秒 ,如何保證我們的接口的調(diào)用次數(shù)在超過第三方接口限流的時(shí)候快速失敗呢?這時(shí)候就需要限流器了。下面是筆者用redis實(shí)現(xiàn)限流器的流程圖。

2 代碼

/**
 * 獲取限流權(quán)限
 * @param key
 * @param millisecond 毫秒數(shù)
 * @param limitCount 限流次數(shù)
 * @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的限流器的實(shí)現(xiàn)(示例講解)就是小編分享給大家的全部內(nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

您可能感興趣的文章:
  • 詳解Redis實(shí)現(xiàn)限流的三種方式
  • 基于Redis實(shí)現(xiàn)分布式應(yīng)用限流的方法
  • redis限流的實(shí)際應(yīng)用
  • redis redisson 限流器的實(shí)例(RRateLimiter)

標(biāo)簽:香港 揚(yáng)州 澳門 林芝 景德鎮(zhèn) 唐山 廣東 贛州

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《基于Redis的限流器的實(shí)現(xiàn)(示例講解)》,本文關(guān)鍵詞  基于,Redis,的,限流,器,實(shí)現(xiàn),;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《基于Redis的限流器的實(shí)現(xiàn)(示例講解)》相關(guān)的同類信息!
  • 本頁收集關(guān)于基于Redis的限流器的實(shí)現(xiàn)(示例講解)的相關(guān)信息資訊供網(wǎng)民參考!
  • 企业400电话

    智能AI客服机器人
    15000

    在线订购

    合计11份范本:公司章程+合伙协议+出资协议+合作协议+股权转让协议+增资扩股协议+股权激励+股东会决议+董事会决议

    推薦文章