Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> Redis

सर्वरलेस Redis कैशिंग के साथ Strapi परफॉरमेंस बूस्ट करें

समय पर प्रोजेक्ट डिलीवर करने का आमतौर पर मतलब है कि आपको जितना संभव हो उतना मौजूदा तकनीक का लाभ उठाने की आवश्यकता है। आपके द्वारा किया गया हर निर्णय जो कस्टम इम्प्लीमेंटेशन की ओर ले जाता है, उसे इस बात पर विचार करना होगा कि आपको अपने स्वयं के समाधान को बनाए रखने की भी आवश्यकता है। यही कारण है कि Strapi जैसे ओपन-सोर्स टूल आपके अगले प्रोजेक्ट के लिए REST API बनाने का तरीका है।

Strapi एक स्टेट-ऑफ-द-आर्ट हेडलेस CMS है। यह आपको ग्राफिकल इंटरफेस के साथ अपना स्कीमा परिभाषित करने की अनुमति देता है, इसलिए गैर-तकनीकी लोग भी डेटा मॉडल कर सकते हैं। आपकी डेवलपमेंट टीम बैकएंड इम्प्लीमेंटेशन की चिंता किए बिना वेब और मोबाइल ऐप बनाने और नई सुविधाएं डिलीवर करने पर ध्यान केंद्रित कर सकती है। आखिरकार, एक बड़ा ओपन-सोर्स समुदाय Strapi को बनाए रखता है।

अपने बैकएंड को तेज करना

अब, SQLite का उपयोग करते समय Strapi प्रतिक्रियाएं देने में अपेक्षाकृत तेज है, लेकिन जैसे-जैसे आपका डेटा और यूजर बेस बढ़ता है, यह शुरू करने के लिए सबसे अच्छा समाधान नहीं हो सकता है। बाजार में आने के बाद, आप दुनिया भर में वितरित हजारों उपयोगकर्ताओं के साथ समाप्त हो सकते हैं।

तो, आपको अपने Strapi को स्केल आउट करने की आवश्यकता है, और बदले में, उस सभी लोड को संभालने के लिए अपने डेटाबेस डिप्लॉयमेंट को स्केल करना होगा। क्या यह अच्छा नहीं होगा यदि आप बस किसी प्रकार का कैश प्लग इन कर सकें?

REST Cache दर्ज करें

Strapi REST Cache Strapi प्लगइन्स का एक संग्रह है। वे आपके Strapi ऐप में LRU कैशिंग जोड़ने में आपकी मदद करते हैं, वास्तविक डेटाबेस अनुरोधों को कम करते हैं।

मेमोरी, Couchbase, और Redis समर्थित हैं, और आप एक कस्टम प्रोवाइडर भी लिख सकते हैं। यहां रोमांचक हिस्सा Redis कैश प्रोवाइडर है जो हमें मिनटों में Upstash Redis से कनेक्ट करने की अनुमति देता है!

आप Upstash Redis का उपयोग उन अधिकांश परिदृश्यों में कर सकते हैं जहां आप Redis का उपयोग करेंगे। अंतर यह है कि आप Upstash Redis को कुछ क्लिक्स के साथ सेट अप कर सकते हैं। यह ग्लोबल रेप्लिकेशन के साथ भी आता है, इसलिए आपके Strapi इंस्टेंस निकटतम रेप्लिका पर रूट हो जाएंगे, जो फास्ट कैश के लिए महत्वपूर्ण है। और यह सर्वरलेस है, इसलिए आप केवल उसी के लिए भुगतान करते हैं जो आप उपयोग करते हैं।

तो, आइए देखें कि हम Strapi को Upstash Redis के साथ कैसे चला सकते हैं!

पूर्व-आवश्यकताएं

इस ट्यूटोरियल के लिए, आपको Upstash अकाउंट और Node.js इंस्टॉलेशन की आवश्यकता है। आपको Yarn की भी आवश्यकता है, जो Strapi का पसंदीदा पैकेज मैनेजर है।

Strapi प्रोजेक्ट बनाना

यदि आपके पास पहले से कोई मौजूदा Strapi प्रोजेक्ट है तो आप सीधे "REST Cache जोड़ना" सेक्शन पर जा सकते हैं। निम्नलिखित चरण केवल काम करने के लिए डेटा सेट अप करने के लिए हैं।

पहला चरण Strapi के साथ एक नया बैकएंड बनाना है। आप निम्नलिखित कमांड के साथ ऐसा कर सकते हैं:

$ npx create-strapi-app@latest strapi-upstash-redis-cache

कमांड समाप्त होने के बाद, Strapi ब्राउज़र खोलेगा और एडमिन लॉगिन विवरण मांगेगा ताकि डेटा मॉडल और पहली कंटेंट बनाई जा सके।

कंटेंट टाइप बिल्डर के साथ डेटा मॉडलिंग

लॉग इन करने के बाद, आप Strapi कंटेंट टाइप बिल्डर के साथ अपना पहला डेटा कलेक्शन मॉडल कर सकते हैं। चित्र 1 दिखाता है कि आप Strapi एडमिन कंसोल में कंटेंट टाइप बिल्डर कहां पा सकते हैं।

सर्वरलेस Redis कैशिंग के साथ Strapi परफॉरमेंस बूस्ट करें

"Create new collection type" लिंक पर क्लिक करें और एक नया प्रकार बनाएं। इसे "Article" नाम दें और दो सरल टेक्स्ट फील्ड जोड़ें। एक फील्ड "title" नामक शॉर्ट टेक्स्ट के लिए है, और एक "content" नामक लॉन्ग टेक्स्ट के लिए है।

चित्र 2 दिखाता है कि "Save" बटन पर क्लिक करने से पहले प्रकार कैसा दिखना चाहिए।

सर्वरलेस Redis कैशिंग के साथ Strapi परफॉरमेंस बूस्ट करें

उसके बाद, हमें उस कंटेंट प्रकार का एक वास्तविक इंस्टेंस चाहिए।

कंटेंट मैनेजर के साथ कंटेंट बनाना

आप चित्र 1 में कंटेंट मैनेजर का स्थान देख सकते हैं। उस पर नेविगेट करें और ऊपर दाईं ओर "Create new entry" बटन पर क्लिक करें।

चित्र 3 में, आप नई कंटेंट एंट्री UI देख सकते हैं। "Save" और "Publish" बटन पर क्लिक करना न भूलें; अन्यथा, आपके पास एक प्राइवेट ड्राफ्ट होगा जो पब्लिक API के माध्यम से सुलभ नहीं है।

सर्वरलेस Redis कैशिंग के साथ Strapi परफॉरमेंस बूस्ट करें

कंटेंट प्रकार के लिए अनुमतियाँ सेट करना

हमारे पास एक आर्टिकल प्रकार और एक वास्तविक आर्टिकल है, लेकिन यह पब्लिक के लिए सुलभ नहीं है। इसे बदलने के लिए, हमें पब्लिक रोल को अपडेट करने की आवश्यकता है। चित्र 4 दिखाता है कि आप इसे नेविगेशन में कहां पा सकते हैं।

सर्वरलेस Redis कैशिंग के साथ Strapi परफॉरमेंस बूस्ट करें

पब्लिक रोल पर क्लिक करें और फिर "Article" अनुमतियों पर। यहां आपको "find" और "findOne" चुनना होगा और "Save" पर क्लिक करना होगा, इस तरह कोई भी उस API को खोलकर सभी आर्टिकल सूचीबद्ध कर सकता है और एक आर्टिकल लोड कर सकता है।

जब आप ब्राउज़र में आर्टिकल संसाधन खोलते हैं, तो आपको हमारा नया आर्टिकल दिखाई देना चाहिए। डिफ़ॉल्ट Strapi सेटिंग्स आपको निम्नलिखित URL पर संसाधन देनी चाहिए:

https://localhost:1337/api/articles

प्रतिक्रिया इस तरह दिखनी चाहिए:

{ 
 "data": [ 
 { 
 "id": 2, 
 "attributes": { 
 "title": "My First Article", 
 "content": "This is an article!", 
 "createdAt": "2022-04-06T15:29:48.104Z", 
 "updatedAt": "2022-04-06T15:29:48.949Z", 
 "publishedAt": "2022-04-06T15:29:48.948Z" 
 } 
 } 
 ], 
 "meta": { 
 "pagination": { 
 "page": 1, 
 "pageSize": 25, 
 "pageCount": 1, 
 "total": 1 
 } 
 } 
} 

REST Cache जोड़ना

अंत में, Upstash Redis के साथ कैशिंग जोड़ने का रोमांचक हिस्सा!

ऐसा करने के लिए, आपको पहले तीन पैकेज इंस्टॉल करने होंगे।

yarn add strapi-plugin-redis \ strapi-plugin-rest-cache \ strapi-provider-rest-cache-redis 

ये तीन पैकेज Strapi को आपके Upstash Redis डेटाबेस में डेटा भेजने की अनुमति देंगे।

Upstash Redis डेटाबेस बनाना

कैश को सही ढंग से कॉन्फ़िगर करने के लिए, हमें एक Redis इंस्टेंस का URL चाहिए। इसके लिए, हमें Upstash Redis डेटाबेस बनाना होगा। तो अपने ब्राउज़र में Upstash Console खोलें और "Create database" बटन पर क्लिक करें।

निर्माण प्रक्रिया समाप्त होने के बाद, आप डेटाबेस URL ले सकते हैं, जिसमें केवल सेकंड लगने चाहिए। "Node" टैब चुनें, और कोड उदाहरण से URL कॉपी करें जैसा कि चित्र 5 में देखा गया है।

सर्वरलेस Redis कैशिंग के साथ Strapi परफॉरमेंस बूस्ट करें

REST Cache कॉन्फ़िगर करना

REST cache को कॉन्फ़िगर करने के लिए, आपको config/plugins.js पर निम्नलिखित सामग्री के साथ एक फाइल बनाने की आवश्यकता है:

module.exports = { 
 redis: { 
 config: { 
 connections: { 
 default: { 
 connection: "REDIS_URL" 
 }, 
 }, 
 }, 
 }, 
 "rest-cache": { 
 config: { 
 provider: { 
 name: "redis" 
 }, 
 strategy: { 
 contentTypes: [ 
 { 
 contentType: "api::article.article", 
 hitpass: false 
 }], 
 //debug: true, 
 }, 
 }, 
 }; 

redis फील्ड में, हम Upstash Redis डेटाबेस से कनेक्शन कॉन्फ़िगर करते हैं। पिछले चरण का URL Strapi के लिए आवश्यक सभी क्रेडेंशियल्स रखता है।

rest-cache फील्ड में, हम कैश को बताते हैं कि उसे किस प्रोवाइडर का उपयोग करना चाहिए और किस कंटेंट प्रकार को कैश किया जाना चाहिए। हमारे मामले में, यह सिर्फ आर्टिकल कंटेंट प्रकार है। hitpass: false सुनिश्चित करता है कि कंटेंट हमेशा कैश्ड रहे, भले ही कुछ प्रमाणीकरण हुआ हो।

यदि आप debug: true को अनकमेंट करते हैं, तो आपको कुछ डिबग आउटपुट दिखाई देगा। यह आउटपुट यह देखने में आसान बनाता है कि कैश काम करता है या नहीं।

Strapi डिफ़ॉल्ट रूप से SQLite का उपयोग करता है, जो आपके डेवलपमेंट कंप्यूटर पर इन-प्रोसेस चलता है, इसलिए यह Upstash Redis की तुलना में तेज होगा जो इस सिस्टम से किलोमीटर दूर तैनात है। चीजें प्रोडक्शन वातावरण में एक वास्तविक डेटाबेस सर्वर के साथ काफी अलग दिखेंगी।

कैश का टेस्ट करना

सब कुछ सही ढंग से कॉन्फ़िगर करने के बाद, हम डेवलपमेंट सर्वर को रीस्टार्ट कर सकते हैं:

yarn run develop 

जब सर्वर चालू और चल रहा हो, तो हम इसे फिर से इस URL से एक्सेस कर सकते हैं:

https://localhost:1337/api/articles

हमारा डेटाबेस पहले अनुरोध की सेवा करेगा, और Upstash Redis बाद वाले करेगा।

निष्कर्ष

Upstash Redis का उपयोग करके Strapi डिप्लॉयमेंट को तेज करने में केवल कुछ मिनट लगते हैं। Upstash Console हमें एक URL देता है जिसे हम बस कॉन्फिग में पेस्ट कर सकते हैं, और बस।

पहला Upstash Redis डेटाबेस फ्री भी है, तो इसे देखें; क्रेडिट कार्ड की आवश्यकता नहीं!

  1. ग्लोबल सर्वरलेस और एज डेटाबेस: निर्बाध, स्केलेबल स्टोरेज ग्लोबल सर्वरलेस और एज डेटाबेस: निर्बाध, स्केलेबल स्टोरेज

    हाल के वर्षों में, सर्वरलेस आर्किटेक्चर और एज कंप्यूटिंग एप्लिकेशन डिप्लॉयमेंट के लिए बहुत लोकप्रिय हो रहे हैं। लेकिन सर्वरलेस और/या एज फंक्शन के अंदर एप्लिकेशन स्टेट और डेटा को स्टोर करना एक अलग कहानी है। कई कठिनाइयाँ हैं जैसे; डेटाबेस से कनेक्शन मैनेज करना, डेटा को कई स्थानों से तेज़ एक्सेस के लिए

  1. एज कैशिंग के साथ Redis में 5ms वैश्विक लेटेंसी प्राप्त करें एज कैशिंग के साथ Redis में 5ms वैश्विक लेटेंसी प्राप्त करें

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

  1. पाइपलाइन REST API के साथ सर्वरलेस Redis एक्सेस को बढ़ाएं पाइपलाइन REST API के साथ सर्वरलेस Redis एक्सेस को बढ़ाएं

    Upstash नेटिव Redis API के अलावा REST API का समर्थन करता है। REST API डेवलपर्स को सर्वरलेस और एज फ़ंक्शंस से कनेक्शन समस्याओं के बिना अपने Redis तक पहुंचने में मदद करता है। लेकिन यदि आप एक ही फ़ंक्शन में कई Redis कमांड निष्पादित करते हैं तो इसका मतलब है कि आप डेटाबेस को कई बार कॉल करेंगे। हमारे समुद