Lua Academy · पाठ

Lua से दर सीमित करना

Redis Lua में स्लाइडिंग-विंडो दर सीमाकर्ता परमाण्विक रूप से लागू करें।

पाठ 3, कुल 4 में से13 चरण

Lua से दर सीमित करना, CoddyKit पर Lua Academy का एक निःशुल्क पाठ है। यह 4 में से 3वाँ पाठ है। इस अध्ययन पथ के 3 तक कोई भी पाठ पूरा पढ़ना निःशुल्क है — इसके बाद CoddyKit PRO हर पाठ अनलॉक करता है, साथ ही अंतर्निर्मित कोड संपादक और चौबीसों घंटे एआई शिक्षक के साथ व्यावहारिक अभ्यास भी उपलब्ध कराता है। यह Lua Academy सीखने के मार्ग का हिस्सा है और आपकी प्रगति वेब तथा CoddyKit ऐप पर सिंक होती रहती है। Lua Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।

दर-सीमा निर्धारण के लिए Redis क्यों?

Redis परमाणु ऑपरेशन, मेमोरी में तेज़ी और कई एप्लिकेशन सर्वरों के बीच साझा स्थिति उपलब्ध कराता है—इसलिए यह वितरित दर-सीमा निर्धारण के लिए आदर्श है।

सरल स्थिर विंडो काउंटर

INCR और EXPIRE का उपयोग करके प्रत्येक समय-विंडो में अनुरोधों की संख्या गिनें।

EVAL "
local key = KEYS[1]
local limit = tonumber(ARGV[1])
local window = tonumber(ARGV[2])
local count = redis.call('INCR', key)
if count == 1 then
  redis.call('EXPIRE', key, window)
end
if count > limit then
  return 0  -- rejected
end
return 1  -- allowed
" 1 rate:user:123 100 60

सॉर्ट किए गए सेट के साथ स्लाइडिंग विंडो

अधिक सटीक दर-सीमा निर्धारक टाइमस्टैम्प के आधार पर कुंजीबद्ध सॉर्ट किए गए सेट का उपयोग करता है। पुरानी प्रविष्टियाँ हटाएँ, वर्तमान अनुरोध जोड़ें और सेट का आकार गिनें।

EVAL "
local key = KEYS[1]
local now = tonumber(ARGV[1])
local window = tonumber(ARGV[2])
local limit = tonumber(ARGV[3])
redis.call('ZREMRANGEBYSCORE', key, 0, now - window * 1000)
redis.call('ZADD', key, now, now .. math.random())
redis.call('EXPIRE', key, window)
local count = redis.call('ZCARD', key)
if count > limit then return 0 end
return 1
" 1 slidingRate:user:123 1706000000000 60 100

टोकन बकेट एल्गोरिदम

टोकन बकेट औसत दर बनाए रखते हुए अचानक बढ़े अनुरोधों की अनुमति देता है। समय के साथ टोकन फिर भरें; प्रत्येक अनुरोध एक टोकन खर्च करता है।

लीकी बकेट एल्गोरिदम

लीकी बकेट एक सख्त स्थिर दर लागू करता है। अनुरोधों को कतार (बकेट) में रखा जाता है और एक निश्चित निकासी दर पर संसाधित किया जाता है। क्षमता से अधिक अनुरोध अस्वीकार कर दिए जाते हैं।

प्रति-उपयोगकर्ता और प्रति-IP सीमाएँ

दर-सीमा निर्धारक को उपयोगकर्ता ID, API कुंजी या IP पते के आधार पर कुंजीबद्ध करें: rate:{userId}, rate:{ip}, rate:{apiKey}।

स्तर-आधारित दर सीमाएँ

उपयोगकर्ता स्तर (मुफ़्त बनाम प्रो) के आधार पर अलग-अलग सीमाएँ लागू करें। कौन-सी सीमा लागू करनी है, यह चुनने से पहले उपयोगकर्ता का स्तर जाँचें।

EVAL "
local tier = redis.call('HGET', 'user:tier', ARGV[1])
local limit = tier == 'pro' and 10000 or 1000
-- ... rest of rate limit check
" 0 "userId123"

हेडर लौटाना

स्क्रिप्ट से शेष अनुरोध संख्या और रीसेट समय लौटाएँ, ताकि एप्लिकेशन HTTP प्रतिक्रिया में X-RateLimit हेडर सेट कर सके।

return {allowed, limit - count, resetTime}

वितरित परमाणु गारंटी

चूँकि दर-सीमा की पूरी जाँच एकल EVAL स्क्रिप्ट में होती है, इसलिए Redis क्लस्टर साझा करने वाले सभी एप्लिकेशन सर्वर इंस्टेंस में यह परमाणु रहती है।

Redis क्लस्टर संबंधी ध्यान देने योग्य बात

Redis Cluster मोड में, स्क्रिप्ट में उपयोग की गई सभी KEYS एक ही स्लॉट में हैश होनी चाहिए। सह-स्थित करने के लिए हैश टैग का उपयोग करें: rate:{user123}:requests।

दर सीमाओं की निगरानी

उपयोगकर्ता/IP जानकारी के साथ अस्वीकृत अनुरोधों का लॉग रखें। अस्वीकृति दर अचानक बढ़ने पर अलर्ट सेट करें (यह हमले या गलत कॉन्फ़िगरेशन का संकेत हो सकता है)।

दर-सीमा निर्धारण प्रश्न

दर-सीमा निर्धारण के लिए एप्लिकेशन स्तर के काउंटरों की तुलना में Redis Lua स्क्रिप्ट बेहतर क्यों है?

पुनरावलोकन: Lua के साथ दर-सीमा निर्धारण

INCR+EXPIRE (स्थिर विंडो) या सॉर्ट किए गए सेट (स्लाइडिंग विंडो) का उपयोग करके Redis Lua में दर-सीमा निर्धारक लागू करें। परमाणु स्क्रिप्ट वितरित एप्लिकेशन सर्वरों में सही परिणाम की गारंटी देती है। HTTP हेडरों के लिए शेष कोटा लौटाएँ।

शुरुआत निःशुल्क

एआई शिक्षक के साथ Lua सीखें — निःशुल्क

अपने ब्राउज़र में वास्तविक कोड लिखें और चलाएँ, चौबीसों घंटे एआई शिक्षक से तुरंत सहायता पाएँ, और वेब या ऐप पर वहीं से शुरू करें जहाँ आपने छोड़ा था।

पाठ्यक्रम
40
पाठ
159

अक्सर पूछे जाने वाले प्रश्न

क्या “Lua से दर सीमित करना” पाठ निःशुल्क है?

हाँ — Lua Academy अध्ययन पथ के 3 तक कोई भी पाठ, जिसमें “Lua से दर सीमित करना” भी शामिल है, यहाँ वेब पर पूरा पढ़ना निःशुल्क है। इसके बाद CoddyKit PRO हर पाठ अनलॉक करता है, साथ ही अंतर्निर्मित कोड संपादक और चौबीसों घंटे एआई शिक्षक के साथ इंटरैक्टिव अभ्यास भी उपलब्ध कराता है। Lua Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।

“Lua से दर सीमित करना” में मैं क्या सीखूँगा?

Redis Lua में स्लाइडिंग-विंडो दर सीमाकर्ता परमाण्विक रूप से लागू करें। आप ब्राउज़र में सीधे चलाए जाने वाले व्यावहारिक कोड के साथ Lua Academy का अभ्यास करते हैं, और पाठ पूरा करते समय 24/7 एआई ट्यूटर आपके प्रश्नों के उत्तर देता है।

क्या Lua Academy शुरू करने के लिए मुझे किसी अनुभव की आवश्यकता है?

पहले के अनुभव की आवश्यकता नहीं है। CoddyKit पर Lua Academy शुरुआती से लेकर उन्नत शिक्षार्थियों तक सभी के लिए व्यवस्थित किया गया है, इसलिए आप यहीं से या शुरुआत से सीखना शुरू कर सकते हैं और अपनी गति से आगे बढ़ सकते हैं। यह 4 में से 3वाँ पाठ है।

“Lua से दर सीमित करना” पाठ पूरा करने में कितना समय लगता है?

CoddyKit का अधिकांश पाठ लगभग 5–10 मिनट में पूरा हो जाता है। हर पाठ छोटा और संवादात्मक है, इसलिए आप लगातार प्रगति करते हैं और वेब या ऐप पर वहीं से सीखना जारी रख सकते हैं जहाँ आपने छोड़ा था।

क्या मैं इस Lua Academy पाठ में कोड लिख और चला सकता हूँ?

हाँ। हर Lua Academy पाठ में एक अंतर्निर्मित कोड संपादक शामिल है, जिससे आप सीधे अपने ब्राउज़र में वास्तविक कोड लिख और चला सकते हैं और तुरंत एआई प्रतिक्रिया पा सकते हैं—स्थानीय सेटअप की आवश्यकता नहीं है।

इस पाठ्यक्रम के सभी पाठ

  1. EVAL और Redis Lua परिवेश
  2. परमाण्विक क्रियाएँ और लेन-देन
  3. Lua से दर सीमित करना
  4. SCRIPT LOAD और EVALSHA
← Lua Academy पर वापस जाएँ