[HttpGet] public async Task<ActionResult<string>> Get() { //限流週期:5秒 int period = 5; //週期內請求數限制:5次,即限制每五秒只能請求五次 int maxCount = 5; long uid = 123456; string action = "login"; string key = string.Format("hist:{0}{1}", uid, action); long current = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds(); var batch = db.CreateBatch(); var tasks = new List<Task>(); //加入SortedSet tasks.Add(batch.SortedSetAddAsync(key, current, current)); //移除五秒之前的記錄 tasks.Add(batch.SortedSetRemoveRangeByScoreAsync(key, 0, current - period * 1000)); //重置過期時間 tasks.Add(batch.KeyExpireAsync(key, TimeSpan.FromSeconds(period + 1))); batch.Execute(); //獲取請求的次數 long currentCount = await db.SortedSetLengthAsync(key); //返回是否大於限制次數 bool res = currentCount <= maxCount; return res ? "未被限流,正常請求" : "超過請求頻次,限制請求"; }
一段基於Redis-SortedSet的限流程式碼
相關文章
- 關於plsql表的一段程式碼SQL
- 基於kubernetes的分散式限流分散式
- 關於反射的導致panic的一段程式碼,求解答反射
- 我的第一段ionic程式碼C程式
- 檢查中文的一段程式碼
- 一段關於JS中this應用奇葩程式碼引發的思考JS
- 第一段JavaScript程式碼JavaScript
- 無聊程式碼一段
- 基於redis實現的四種常見的限流策略Redis
- 基於 Redis 實現分散式應用限流Redis分散式
- 一段監視 DOM 的神奇程式碼
- Envoy熔斷限流實踐(二)Rainbond基於RLS服務全侷限流AI
- [java併發程式設計]基於訊號量semaphore實現限流器Java程式設計
- 補全一段jQuery程式碼jQuery
- 分享一段牛逼程式碼
- 一段奇葩Javascript程式碼引發的思考JavaScript
- 月半談(二)基於 Redis 的限流器-簡單計數器Redis
- 遊戲推薦業務中基於 sentinel 的動態限流實踐遊戲
- 一個輕量級的基於RateLimiter的分散式限流實現MIT分散式
- 如何寫一段死鎖程式碼
- 關於限流實現的思考
- 基於jquery的頁面程式碼的優化jQuery優化
- 一段讓人瑟瑟發抖的ABAP程式碼
- 送給產品經理的一段程式碼 (!(~+[]) + {})[--[~+""][+[]] * [~+[]] + ~~!+[]] + ({} + [])[[~!+[]]
- 生成一段可被外部執行的JS程式碼JS
- 微服務架構 | 5.2 基於 Sentinel 的服務限流及熔斷微服務架構
- 基於Redis實現一套支援排隊等待的限流器Redis
- 基於Sklearn機器學習程式碼實戰機器學習
- 幽默:朋友發給我一段程式碼
- 基於令牌桶演算法實現一個限流器演算法
- 基於 AST 的程式碼自動生成方案AST
- 一段程式碼完全遮蔽360瀏覽器的廣告瀏覽器
- 貼一段網站被"後門"後的程式碼網站
- Python實現裝飾模式的一段程式碼Python模式
- 看看一段工廠模式的程式碼是否正確?模式
- php基於redis的list型資料結構實現ip限流操作PHPRedis資料結構
- 微軟推出基於Excel的低程式碼程式語言:Power Fx微軟Excel
- python怎麼隱藏一段程式碼Python