中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

基于Redis的限流器的實現(示例講解)

發布時間:2020-08-22 14:43:12 來源:腳本之家 閱讀:310 作者:秦霜 欄目:數據庫

1 概述

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

基于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的限流器的實現(示例講解)就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持億速云。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

汶上县| 临漳县| 罗城| 西充县| 尤溪县| 望奎县| 嘉善县| 阿克苏市| 德化县| 伊通| 宁陵县| 永昌县| 宁南县| 宽城| 高邮市| 龙山县| 房山区| 姜堰市| 莒南县| 邹平县| 望城县| 江门市| 万载县| 梁平县| 溆浦县| 岳阳市| 梅河口市| 宁安市| 耿马| 布尔津县| 正安县| 德州市| 句容市| 孟村| 莆田市| 昔阳县| 潮安县| 建昌县| 大新县| 通渭县| 唐海县|