Public APIs
हर API key को plan के हिसाब से limit मिलती है, अच्छे व्यवहार वाले क्लाइंट के लिए bursts के साथ और बाकियों के लिए सटीक Retry-After के साथ।
Atomic, server-side rate limits। एक कमांड में GCRA, या sliding window, token bucket या leaky bucket वाले नामित limiters। Lua की ज़रूरत नहीं।
User 42 के लिए प्रति मिनट 10 requests। जवाब बताता है कि allowed है, limit क्या है और कितनी बची हैं।
असली HotKV कमांड और उदाहरण रिस्पॉन्स के साथ एक एनिमेटेड वॉकथ्रू। किसी भी कदम पर क्लिक करके वहां पहुंचें। कमांड और रिस्पॉन्स अंग्रेज़ी में ही रहते हैं, ठीक वैसे जैसे आप HotKV में टाइप करते और देखते हैं।
बिना limits वाली API से आउटेज बस एक गड़बड़ क्लाइंट की दूरी पर है। जाँच application कोड में करने का मतलब है एक read, एक गणना और एक write, और एक साथ आने वाली requests इनके बीच की जगहों से निकल जाती हैं। कई टीमें सिर्फ़ इसे atomic बनाने के लिए एक Lua script संभालती रह जाती हैं।
GCRA.LIMIT एक ही चरण में फ़ैसला भी करता है और उसे दर्ज भी करता है। इसलिए एक साथ आए क्लाइंट एक ही state पर दोनों पास नहीं हो सकते, और limit window की सीमाओं पर reset होने की जगह सहज ढंग से refill होती है। जिन limits को आप नाम से संभालते हैं, उनके लिए RATELIMIT.CREATE sliding window, token bucket या leaky bucket limiter बनाता है, जिसमें दर्ज रहता है कि उसने क्या allow किया और क्या deny।
User 42 के लिए प्रति मिनट 10 requests। जवाब बताता है कि allowed है, limit क्या है और कितनी बची हैं।
GCRA.LIMIT ratelimit:user:42 60000 10Scraper अपनी burst की गुंजाइश खत्म कर देता है, और फिर उसे बताया जाता है कि कितनी देर रुकना है। Denied request से कुछ नहीं बदलता।
GCRA.LIMIT ratelimit:bot:7 60000 10Free-plan ग्राहकों को sliding window पर प्रति मिनट 100 requests मिलती हैं।
RATELIMIT.CREATE free_plan 100 60000 ALGO sliding_windowExport endpoint की लागत 20 units है, इसलिए वह गुंजाइश का ज़्यादा हिस्सा लेता है।
RATELIMIT.CHECK free_plan customer:881 COST 20Settings, tracked keys और allowed व denied requests के कुल आँकड़े।
RATELIMIT.STATS free_planहर API key को plan के हिसाब से limit मिलती है, अच्छे व्यवहार वाले क्लाइंट के लिए bursts के साथ और बाकियों के लिए सटीक Retry-After के साथ।
Credential stuffing को धीमा करने के लिए प्रति IP और प्रति account कोशिशें सीमित की जाती हैं।
किसी partner API या LLM provider की कॉल उनके quota के भीतर रखी जाती हैं, पूरे fleet के हर worker में।
Bursts के साथ सहज refill, atomic जाँच और update, और deny होने पर retry का समय।
GCRA.LIMITGCRA.RESETSliding window, token bucket या leaky bucket, एक बार बनाए जाते हैं और हर key के लिए जाँचे जाते हैं।
RATELIMIT.CREATERATELIMIT.CHECKमहँगी कॉल कई requests के बराबर गिनी जा सकती हैं। GCRA.LIMIT count लेता है, RATELIMIT.CHECK एक COST लेता है।
COSTहर limiter के लिए allowed और denied के कुल आँकड़े।
RATELIMIT.STATSनहीं। GCRA.LIMIT और RATELIMIT.CHECK दोनों पूरी जाँच एक atomic कमांड में करते हैं।
GCRA.LIMIT को किसी setup की ज़रूरत नहीं और वह हर plan पर काम करता है। RATELIMIT.* नामित limiters algorithm का विकल्प और आँकड़े जोड़ते हैं, और Performance और Scale plans का हिस्सा हैं।
कुछ नहीं। Denied GCRA कॉल limiter को जैसा है वैसा छोड़ देती है, इसलिए दोबारा कोशिश करने वाले क्लाइंट को और सज़ा नहीं मिलती।
HotKV Redis प्रोटोकॉल बोलता है, इसलिए आप किसी मौजूदा क्लाइंट को इसकी ओर इंगित करके यही कमांड चला सकते हैं।