जब डेटाबेस और क्लाइंट एक ही क्षेत्र में हों तो Redis के साथ 1ms लेटेंसी प्राप्त करना आसान है। लेकिन यदि आप चाहते हैं कि क्लाइंट विश्व स्तर पर वितरित हों तो लेटेंसी 100ms से अधिक हो जाती है। हमने इस समस्या को दूर करने के लिए एज कैशिंग विकसित की है।
एज कैशिंग
एज कैशिंग के साथ, REST प्रतिक्रियाएं दुनिया भर के एज स्थानों पर कैश की जाती हैं, बिल्कुल CDN की तरह। एज कैशिंग सक्षम होने पर हम औसतन 5ms वैश्विक लेटेंसी देखते हैं। हमारा बेंचमार्क एप्लिकेशन देखें जहां हम 10 अलग-अलग क्षेत्रों में स्थित क्लाइंट्स से लेटेंसी नंबर रिकॉर्ड करते हैं। हम एज URL और प्लेन REST URL पर किए गए अनुरोधों के बीच लेटेंसी की तुलना करते हैं। जैसे-जैसे सर्वर और क्लाइंट के बीच की दूरी बढ़ती है, एज कैशिंग का प्रभाव बढ़ता जाता है।

उपयोग के मामले
वेब/मोबाइल (बैकेंडलेस) क्लाइंट्स
Upstash रीड-ओनली ऑथेंटिकेशन टोकन प्रदान करता है जिससे उपयोगकर्ता बिना किसी बैकेंड के डेटाबेस तक पहुंच सकते हैं। आप सीधे वेब या मोबाइल एप्लिकेशन से Redis तक पहुंच सकते हैं। इस आर्किटेक्चर में, क्लाइंट कहीं भी हो सकते हैं। अपने उपयोगकर्ताओं के निकटतम स्थानों पर डेटा कैश करना बहुत मायने रखता है।
मल्टी-रीजन सर्वरलेस आर्किटेक्चर
आप अपने AWS Lambda फ़ंक्शन को वैश्विक लेटेंसी कम करने के लिए कई क्षेत्रों में चला सकते हैं। Vercel/Netlify फ़ंक्शन कुछ कॉन्फ़िगरेशन में अलग-अलग क्षेत्रों में चलते हैं। एज कैशिंग के साथ सर्वरलेस Redis आपको तेज़ डेटा देगा चाहे आपके सर्वरलेस फ़ंक्शन कहीं भी हों।
एज फ़ंक्शंस
एज कंप्यूटिंग (Cloudflare Workers आदि) विश्व स्तर पर तेज़ एप्लिकेशन बनाने का एक लोकप्रिय तरीका बन रहा है। एज फ़ंक्शंस के साथ चुनौती यह है कि आपके पास अपना डेटा रखने के लिए कई विकल्प नहीं हैं। कम लेटेंसी और हल्केपन के साथ Redis एज कैशिंग एज फ़ंक्शंस के लिए एक बेहतरीन फिट है।
शुरुआत करें
आप Upstash कंसोल में एज कैशिंग सक्षम कर सकते हैं। ध्यान रखें कि एज कैशिंग की अतिरिक्त लागत होती है।
एक बार एज कैशिंग सक्षम हो जाने पर, आप REST API डायलॉग में एज URL पा सकते हैं। एज कैशिंग केवल GET कॉल के लिए उपलब्ध है। अपडेट (POST) के लिए, आप अभी भी प्लेन REST API का उपयोग कर सकते हैं।
डिफ़ॉल्ट रूप से, कैश की गई प्रतिक्रियाएं 30 सेकंड में समाप्त हो जाती हैं। आप इसे Cache-Control: max-age=<seconds> हेडर से नियंत्रित कर सकते हैं।
उदाहरण:
curl https://us1-smart-bunny-32732.edge-c.upstash.io/get/foo \
-H "Authorization: Bearer 2dfgf98elrg0w009c842z2adfdde9132" \
-H "Cache-Control: max-age=50"
उपरोक्त URL पर पहला अनुरोध मूल सर्वर से प्रतिक्रिया प्राप्त करेगा। अगले अनुरोध एज स्थानों से प्राप्त होंगे। कैश की गई प्रतिक्रियाएं प्रत्येक एज स्थान पर 50 सेकंड के बाद समाप्त हो जाएंगी।
एज कैशिंग बनाम ग्लोबल डेटाबेस
वैश्विक डेटाबेस बनाना (अपडेट: यह जारी हो चुका है, और जानें) Redis को कई क्षेत्रों में दोहराकर हमारी रोडमैप में है। ग्लोबल डेटाबेस आपको लिखने की लेटेंसी को दोहराकर बेहतर स्थिरता गारंटी और लिखने की लेटेंसी देंगे। लेकिन सभी क्षेत्रों में डेटाबेस को दोहराना बहुत महंगा हो सकता है। फिर भी आपको सभी स्थानों में लेटेंसी कम करने के लिए कैशिंग की आवश्यकता हो सकती है। इसलिए एज कैशिंग और ग्लोबल प्रतिकृति एक-दूसरे के पूरक समाधान हैं न कि प्रतिस्पर्धी। यदि आपका उपयोग केस अंततः सुसंगत रीड्स को सहन कर सकता है, तो एज कैशिंग पहले से ही एक बेहतरीन समाधान है जो वैश्विक तेज़ डेटा प्रदान करता है।
सर्वरलेस और एज डेटा पर हमारे प्रयासों के बारे में आपकी प्रतिक्रिया का इंतजार है। ट्विटर और डिस्कॉर्ड पर हमसे बात करें।