四、Redis實現限流

?簡介:

??????? 限流算法在分布式領域是一個經常被提起的話題,當系統的處理能力有限時,如何阻止計劃外的請求繼續對系統施壓。

????????系統要限定用戶的某個行為在指定的時間里只能允許發生 N 次,如何使用 Redis 的數據結構來實現這個限流的功能?

固定窗口

????????比如我們規定我們的一個接口一分鐘只能訪問10次的話。使用固定窗口計數器算法的話可以這樣實現:給定一個變量counter來記錄處理的請求數量,當1分鐘之內處理一個請求之后讓counter+1,1分鐘之內的如果counter=100的話,后續的請求就會被全部拒絕。

? ? ? ? 但固定窗口有一個缺點,速率不一致,無法應對激增的并發請求。比如我們限制一個接口一分鐘只能訪問10次的話,前半分鐘一個請求沒有接收,后半分鐘接收了10個請求。

該窗口利用redis的string即可實現

滑動窗口

? ? ? ? 為了解決上述所說的,流量激增問題,我們需要設計一個滑動窗口。它把時間以一定比例分片。例如我們的借口限流每分鐘處理60個請求,我們可以把 1 分鐘分為60個窗口。每隔1秒移動一次。當滑動窗口的格子劃分的越多,滑動窗口的滾動就越平滑。

? ? ? ? 這一點可以使用redis的zset實現滑動窗口。zset的value存時間戳。

????????實現步驟:1.zadd 指令,存當前請求的次數? 2.zremrangeByScore清除時間窗口以外的請求 3.zcard獲取當前key的請求。

參考:https://zhuanlan.zhihu.com/p/342597134

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/84207.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/84207.shtml
英文地址,請注明出處:http://en.pswp.cn/web/84207.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

基于Geotools的兩條道路相交并根據交點形成新路線實戰-以OSM數據為例

目錄 前言 一、需求場景及分解 1、需求場景 2、需求應用 二、需求實現 1、加載路網數據 2、獲取道路信息 3、相交點求解 4、生成新道路 5、結果可視化 三、總結 前言 在當今數字化迅速發展的時代,地理空間數據的處理與分析已成為眾多領域不可或缺的關鍵技…

goland有基礎速通(需要其它編程語言基礎)

tip: 無論是變量、方法還是struct的訪問權限控制都是通過命名控制的,命名的首字母是大寫就相當于java中的public,小寫的話就是private,(private只有本包可以訪問) 1 go的變量聲明 普通變量 特點: 變量類…

量化面試綠皮書:19. 相關系數

文中內容僅限技術學習與代碼實踐參考,市場存在不確定性,技術分析需謹慎驗證,不構成任何投資建議。 19. 相關系數 假設有三個隨機變量x、y和z。 x與y之間的相關系數為0.8,x與z之間的相關系數也是0.8。 Q: 那么y與z之間的最大相關…

新生活的開啟:從 Trae AI 離開后的三個月

很久沒有寫文章了,想借著入職新公司一個月的機會,和大家嘮嘮嗑。 離職 今年2月份我從字節離職了,結束了四年的經歷,當時離開的核心原因是覺得加班時間太長了,平均每天都要工作15,16個小時,周末…

LLM部署之vllm vs deepspeed

部署大語言模型(如 Qwen/LLaMA 等)時,vLLM 與 DeepSpeed 是當前主流的兩種高性能推理引擎。它們各自專注于不同方向,部署流程也有明顯區別。 vLLM 提供極致吞吐、低延遲的推理服務,適用于在線部署;DeepSpeed 更側重訓練與推理混合優化,支持模型并行,適用于推理 + 微調/…

Git(二):基本操作

文章目錄 Git(二):基本操作添加文件修改文件版本回退撤銷修改情況一:工作區的代碼還沒有 add情況?:已經 add 但沒有 commit情況三:已經 add 并且也 commit 刪除文件 Git(二):基本操作 添加文件 首先我們先來學習一個…

nginx + ffmpeg 實現 rtsp視頻實時播放和歷史播放

nginx和ffmpeg 的安裝請參考我的另一篇文章 Nginxrtmpffmpeg搭建視頻轉碼服務_nginx-rtmp-module-master-CSDN博客 目錄 1、整體方案設計如圖 2、nginx下目錄創建和配置文件創建 3、創建視頻流生成腳本 4、修改nginx配置 5、管理界面 (video.html) 6、ffmpeg后臺啟動 …

全國產!瑞芯微 RK3576 ARM 八核 2.2GHz 工業核心板—硬件說明書

前 言 本文為創龍科技 SOM-TL3576 工業核心板硬件說明書,主要提供 SOM-TL3576 工業 核心板的產品功能特點、技術參數、引腳定義等內容,以及為用戶提供相關電路設計指導。 為便于閱讀,下表對文檔出現的部分術語進行解釋;對于廣泛認同釋義的術語,在此不做注釋。 硬件參考…

web3 瀏覽器注入 (如 MetaMask)

以下是關于 瀏覽器注入方式(如 MetaMask) 的完整詳解,包括原理、使用方法、安全注意事項及常見問題解決方案: 1. 核心原理 當用戶安裝 MetaMask 等以太坊錢包擴展時,錢包會向瀏覽器的 window 對象注入一個全局變量 window.ethereum,這個對象遵循 EIP-1193 標準,提供與區…

解密提示詞工程師:AI 時代的新興職業

大家好!在人工智能飛速發展的當下,有一個新興職業正悄然崛起——提示詞工程師。他們雖不如數據科學家般廣為人知,卻在 AI 應用領域發揮著獨特且關鍵的作用。 何為提示詞工程師? 提示詞工程師專注于設計和優化與 AI 模型進行交互的提示詞&…

linux 下 jenkins 構建 uniapp node-sass 報錯

背景: jenkins 中構建 uniapp 應用 配置: 1. 將windows HbuilderX 插件目錄下的 uniapp-cli 文件夾復制到 服務器 /var/jenkins_home/uniapp-cli 2. jenkins 構建步驟增加 執行 shell ,內容如下 echo ">> 構建中..."# 打包前端 export LANGen_US.UTF-8…

QT常見問題(1)

QT常見問題(1) 1.問題描述 Qt在編譯器中直接運行沒有任何問題,但是進入exe生成目錄直接雙擊運行就報錯:文件無法定位程序輸入點_zn10qarraydata10deallocateepsyy于動態鏈接庫。 2.問題原因 這個錯誤通常是由于程序運行時找不…

『大模型筆記』第2篇:并發請求中的 Prefill 與 Decode:優化大語言模型性能

『大模型筆記』并發請求中的 Prefill 與 Decode:優化大語言模型性能 文章目錄 一. Token 生成的兩個階段:Prefill 和 Decode1.1. 指標分析1.2. 資源利用率分析二. 并發處理機制2.1. 靜態批處理 vs 持續批處理(Static Batching vs. Continuous Batching)2.2. Prefill 優先策略…

JVM(7)——詳解標記-整理算法

核心思想 標記-整理算法同樣分為兩個主要階段,但第二個階段有所不同: 標記階段: 與標記-清除算法完全一致。遍歷所有可達對象(從 GC Roots 開始),標記它們為“存活”。 整理階段: 不再簡單地清…

進程虛擬地址空間

1. 程序地址空間回顧 我們在學習語言層面時,會了解到這樣的空間布局圖,我們先對他進行分區了解: 如果以靜態static修飾的變量就會當成已初始化全局變量來看待,存放在已初始化數據區和未初始化數據區之前。 如果不用static修飾test…

C語言學習day17-----位運算

目錄 1.位運算 1.1基礎知識 1.1.1定義 1.1.2用途 1.1.3軟件控制硬件 1.2運算符 1.2.1與 & 1.2.2或 | 1.2.3非 ~ 1.2.4異或 ^ 1.2.5左移 << 1.2.6右移 >> 1.2.7代碼實現 1.2.8置0 1.2.9置1 1.2.10不借助第三方變量&#xff0c;實現兩個數的交換…

【linux】簡單的shell腳本練習

簡單易學 解釋性語言&#xff0c;不需要編譯即可執行 對于一個合格的系統管理員來說&#xff0c;學習和掌握Shell編程是非常重要的&#xff0c;通過shell程序&#xff0c;可以在很大程度上簡化日常的維護工作&#xff0c;使得管理員從簡單的重復勞動中解脫出來 用戶輸入任意兩…

機構運動分析系統開發(Python實現)

機構運動分析系統開發(Python實現) 一、引言 機構運動分析是機械工程的核心內容,涉及位置、速度和加速度分析。本系統基于Python開發,實現了平面連桿機構的完整運動學分析,包含數學建模、數值計算和可視化功能。 二、系統架構設計 #mermaid-svg-bT8TPKQ98UU9ERet {font…

工程師生活:清除電熱水壺(鍋)水垢方法

清除電熱水壺&#xff08;鍋&#xff09;水垢方法 水垢是水加熱時自然形成的鈣質沉淀物&#xff0c;常粘附在水壺內壁及發熱盤上。它不僅影響水的品質&#xff0c;還會縮短水壺的使用壽命&#xff0c;因此需要定期清除。建議根據各地水質不同&#xff0c;每年除垢 2 至 4 次。…

[分布式并行策略] 數據并行 DP/DDP/FSDP/ZeRO

上篇文章【[論文品鑒] DeepSeek V3 最新論文 之 DeepEP】 介紹了分布式并行策略中的EP&#xff0c;簡單的提到了其他幾種并行策略&#xff0c;但礙于精力和篇幅限制決定將內容分幾期&#xff0c;本期首先介紹DP&#xff0c;但并不是因為DP簡單&#xff0c;相反DP的水也很深&…