基于Redis的限流器的實現(xiàn)(示例講解)
更新時間:2017年12月28日 10:16:50 作者:秦霜
下面小編就為大家分享一篇基于Redis的限流器的實現(xiàn)(示例講解),具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
1 概述
系統(tǒng)中的接口通常都有限流,比如 70次/秒 ,如何保證我們的接口的調(diào)用次數(shù)在超過第三方接口限流的時候快速失敗呢?這時候就需要限流器了。下面是筆者用redis實現(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的限流器的實現(xiàn)(示例講解)就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
淺析redis cluster介紹與gossip協(xié)議
這篇文章主要介紹了redis cluster介紹與gossip協(xié)議,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-09-09使用Redis實現(xiàn)JWT令牌主動失效機(jī)制
JWT是一種輕量級的身份驗證和授權(quán)機(jī)制,它是一種 JSON 格式的數(shù)據(jù)串,通常用于客戶端和服務(wù)端之間的單點登錄(Single Sign-On, SSO)場景,本文給大家介紹了如何使用Redis來實現(xiàn)JWT令牌主動失效機(jī)制,需要的朋友可以參考下2024-08-08基于redis實現(xiàn)的點贊功能設(shè)計思路詳解
點贊是我們現(xiàn)在經(jīng)常見到的一個效果,如朋友圈、微博都有點贊的效果,下面這篇文章主要跟大家分享了基于redis實現(xiàn)的點贊功能設(shè)計思路的相關(guān)資料,文中介紹的非常詳細(xì),對大家實現(xiàn)點贊功能具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起看看吧。2017-05-05內(nèi)存型數(shù)據(jù)庫Redis持久化小結(jié)
redis是一個支持持久化的內(nèi)存數(shù)據(jù)庫,也就是說redis需要經(jīng)常將內(nèi)存中的數(shù)據(jù)同步到磁盤來保證持久化.redis支持四種持久化方式,一是 Snapshotting(快照)也是默認(rèn)方式,二是Append-only file(縮寫aof)的方式,三是虛擬內(nèi)存方式,四是diskstore方式.今天我們總結(jié)下前2種。2017-09-09詳解redis腳本命令執(zhí)行問題(redis.call)
這篇文章主要介紹了redis腳本命令執(zhí)行問題(redis.call),分別介紹了redis-cli命令行中執(zhí)行及l(fā)inux命令行中執(zhí)行問題,本文給大家介紹的非常詳細(xì),需要的朋友參考下吧2022-03-03