Redis कैशिंग और संदेश-विनिमय (Pub/Sub, Streams) · पाठ

Cache stampede और thundering herd को रोकना

जानें कि cache stampede क्या होता है, लोकप्रिय key expire होने पर वह database पर अत्यधिक भार क्यों डालता है और कौन-सी locking तथा refresh तकनीकें load के दौरान backend को सुरक्षित रखती हैं।

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

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

कैश स्टैम्पीड क्या है

कैश स्टैम्पीड (या थंडरिंग हर्ड) तब होता है जब किसी लोकप्रिय कैश की गई कुंजी की समय-सीमा समाप्त हो जाती है और उसी क्षण बहुत-से अनुरोध कैश में विफल हो जाते हैं। मान को फिर से बनाने के लिए वे सभी डेटाबेस पर टूट पड़ते हैं और उसे अत्यधिक व्यस्त कर देते हैं।

यह इतना खतरनाक क्यों है

अधिक ट्रैफ़िक में, सैकड़ों या हजारों समवर्ती कैश-विफलताएँ कुछ मिलीसेकंड में डेटाबेस तक पहुँच सकती हैं। जो बैकएंड सामान्यतः उस कुंजी के लिए कोई भार नहीं संभालता, वह अचानक पूरा भार लेने लगता है, जिससे विलंबता में तेज़ उछाल या सेवा-विफलता हो सकती है।

सरल कैश-असाइड प्रवाह

मूल तरीका कैश को पढ़ता है और कैश में मान न मिलने पर डेटाबेस से पूछकर परिणाम संग्रहीत करता है। हर समवर्ती कैश-विफलता यह डेटाबेस पूछताछ चलाती है—यही इसकी कमजोरी है।

समाधान 1: पुनर्गणना लॉक

केवल पहले ऐसे अनुरोध को मान फिर से बनाने दें जिसमें कैश में मान नहीं मिला; बाकी अनुरोध प्रतीक्षा करें या पुराना मान दें। Redis का SET NX ठीक एक क्लाइंट को थोड़े समय के लिए लॉक देता है।

SET lock:product:42 "1" NX EX 10

लॉक प्रवाह कैसे काम करता है

कैश में मान न मिलने पर:

  • SET NX से लॉक प्राप्त करने का प्रयास करें
  • यदि लॉक मिल जाए, तो डेटाबेस से पूछें और कैश को फिर से भरें
  • यदि न मिले, तो थोड़ी देर प्रतीक्षा करें और कैश को फिर पढ़ें

हर समाप्ति पर डेटाबेस की केवल एक पूछताछ चलती है।

समाधान 2: पुराना-मान-दें-और-पुनः-मान्य करें

मान को उसकी वास्तविक TTL से पहले की तार्किक समाप्ति के साथ संग्रहीत करें। तार्किक समय बीत जाने पर पुराना मान तुरंत दें और उसे पृष्ठभूमि में ताज़ा करें, ताकि उपयोगकर्ताओं को कैश-विफलता पर कभी प्रतीक्षा न करनी पड़े।

समाधान 3: प्रारंभिक संभाव्य समाप्ति

हर अनुरोध पर, समाप्ति निकट आने के साथ थोड़ी बढ़ती हुई संभावना से, कुंजी को समाप्त होने से पहले स्वेच्छा से ताज़ा करें। इससे पुनर्गणना समय में फैल जाती है और भीड़ कभी नहीं बनती।

TTL में यादृच्छिक अंतर जोड़ना

यदि बहुत-सी कुंजियाँ एक साथ लिखी जाती हैं (जैसे परिनियोजन के समय), तो वे एक साथ समाप्त होती हैं और समकालिक स्टैम्पीड पैदा करती हैं। हर TTL में यादृच्छिक अंतर जोड़ें, ताकि समाप्तियाँ अलग-अलग समय पर हों।

SET product:42 "..." EX 305
SET product:43 "..." EX 318

लॉक को सुरक्षित रूप से छोड़ना

पुनर्निर्माण के बाद लॉक हटाएँ। लॉक के लिए भी छोटी TTL दें, ताकि क्रैश हुआ कार्यकर्ता उसे हमेशा पकड़े न रखे और ताज़ा करने की प्रक्रिया को अवरुद्ध न करे।

DEL lock:product:42

रणनीति चुनना

दिशानिर्देश:

  • लॉक: सबसे सरल, कुछ अनुरोधों में थोड़ी देर करता है
  • पुराना-मान-दें-और-पुनः-मान्य करें: सबसे अच्छा उपयोगकर्ता अनुभव, पृष्ठभूमि में ताज़ा करना आवश्यक
  • संभाव्य + यादृच्छिक अंतर: भार को सहज बनाता है, प्रतीक्षा नहीं होती

बहुत अधिक उपयोग वाली कुंजियों के लिए इन्हें मिलाकर इस्तेमाल करें।

नकारात्मक कैशिंग

एक संबंधित खतरा कैश प्रवेश वाली विफलता है: डेटाबेस में मौजूद न होने वाली कुंजी के लिए बहुत-से अनुरोध हमेशा कैश में विफल होते हैं और बैकएंड पर भारी भार डालते हैं। 'नहीं मिला' परिणाम को भी थोड़ी देर के लिए कैश करें, ताकि दोहराई गई खोजें वहीं संभल जाएँ।

SET product:9999 "__NULL__" EX 30

त्वरित जाँच

कैश स्टैम्पीड रोकने से जुड़े अपने ज्ञान की जाँच करें।

पुनरावलोकन

आपने कैश स्टैम्पीड रोकना सीखा:

  • गरम कुंजी की समय-सीमा समाप्त होने पर स्टैम्पीड डेटाबेस पर बाढ़ ला देता है
  • SET NX पुनर्गणना लॉक पुनर्निर्माण को एक क्लाइंट तक सीमित करता है
  • पुराना-मान-दें-और-पुनः-मान्य करें तरीका ताज़ा करते समय पुराना डेटा देता है
  • संभाव्य प्रारंभिक समाप्ति पुनर्गणना को समय में फैला देती है
  • TTL में यादृच्छिक अंतर समकालिक सामूहिक समाप्ति रोकता है
शुरुआत निःशुल्क

एआई शिक्षक के साथ Redis कैशिंग और संदेश-विनिमय (Pub/Sub, Streams) सीखें — निःशुल्क

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

पाठ्यक्रम
12
पाठ
48

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

क्या “Cache stampede और thundering herd को रोकना” पाठ निःशुल्क है?

हाँ — Redis कैशिंग और संदेश-विनिमय (Pub/Sub, Streams) अध्ययन पथ के 3 तक कोई भी पाठ, जिसमें “Cache stampede और thundering herd को रोकना” भी शामिल है, यहाँ वेब पर पूरा पढ़ना निःशुल्क है। इसके बाद CoddyKit PRO हर पाठ अनलॉक करता है, साथ ही अंतर्निर्मित कोड संपादक और चौबीसों घंटे एआई शिक्षक के साथ इंटरैक्टिव अभ्यास भी उपलब्ध कराता है। Redis कैशिंग और संदेश-विनिमय (Pub/Sub, Streams) पाठ्यक्रम में कुल 4 पाठ शामिल हैं।

“Cache stampede और thundering herd को रोकना” में मैं क्या सीखूँगा?

जानें कि cache stampede क्या होता है, लोकप्रिय key expire होने पर वह database पर अत्यधिक भार क्यों डालता है और कौन-सी locking तथा refresh तकनीकें load के दौरान backend को सुरक्षित रखती हैं। आप ब्राउज़र में सीधे चलाए जाने वाले व्यावहारिक कोड के साथ Redis कैशिंग और संदेश-विनिमय (Pub/Sub, Streams) का अभ्यास करते हैं, और पाठ पूरा करते समय 24/7 एआई ट्यूटर आपके प्रश्नों के उत्तर देता है।

क्या Redis कैशिंग और संदेश-विनिमय (Pub/Sub, Streams) शुरू करने के लिए मुझे किसी अनुभव की आवश्यकता है?

पहले के अनुभव की आवश्यकता नहीं है। CoddyKit पर Redis कैशिंग और संदेश-विनिमय (Pub/Sub, Streams) शुरुआती से लेकर उन्नत शिक्षार्थियों तक सभी के लिए व्यवस्थित किया गया है, इसलिए आप यहीं से या शुरुआत से सीखना शुरू कर सकते हैं और अपनी गति से आगे बढ़ सकते हैं। यह 4 में से 4वाँ पाठ है।

“Cache stampede और thundering herd को रोकना” पाठ पूरा करने में कितना समय लगता है?

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

क्या मैं इस Redis कैशिंग और संदेश-विनिमय (Pub/Sub, Streams) पाठ में कोड लिख और चला सकता हूँ?

हाँ। हर Redis कैशिंग और संदेश-विनिमय (Pub/Sub, Streams) पाठ में एक अंतर्निर्मित कोड संपादक शामिल है, जिससे आप सीधे अपने ब्राउज़र में वास्तविक कोड लिख और चला सकते हैं और तुरंत एआई प्रतिक्रिया पा सकते हैं—स्थानीय सेटअप की आवश्यकता नहीं है।

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

  1. कैश क्यों? कैशिंग का परिचय
  2. बुनियादी कैश पैटर्न लागू करना
  3. कैश निष्कासन और समाप्ति
  4. Cache stampede और thundering herd को रोकना
← Redis कैशिंग और संदेश-विनिमय (Pub/Sub, Streams) पर वापस जाएँ