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

Strapi के लिए सर्वर रहित रेडिस कैशिंग

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

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

अपने बैकएंड को गति देना

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

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

REST कैश दर्ज करें

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

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

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

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

आवश्यकताएँ

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

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

यदि आपके पास पहले से ही एक मौजूदा स्ट्रैपी परियोजना है, तो आप सीधे "रीस्ट कैश जोड़ना" अनुभाग पर जा सकते हैं। निम्न चरण केवल काम करने के लिए डेटा सेट करने के लिए हैं।

पहला कदम Strapi के साथ एक नया बैकएंड बना रहा है। आप इसे निम्न आदेश के साथ कर सकते हैं:

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

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

सामग्री-प्रकार निर्माता के साथ मॉडलिंग डेटा

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

Strapi के लिए सर्वर रहित रेडिस कैशिंग

"नया संग्रह प्रकार बनाएं" लिंक पर क्लिक करें और एक नया प्रकार बनाएं। इसे "आलेख" नाम दें और दो साधारण टेक्स्ट फ़ील्ड जोड़ें। एक फ़ील्ड "शीर्षक" नामक छोटे टेक्स्ट के लिए है और दूसरा "सामग्री" नामक लंबे टेक्स्ट के लिए है।

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

Strapi के लिए सर्वर रहित रेडिस कैशिंग

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

Content Manager के साथ सामग्री बनाना

आप चित्र 1 में सामग्री प्रबंधक का स्थान देख सकते हैं। उस पर नेविगेट करें और शीर्ष दाईं ओर "नई प्रविष्टि बनाएं" बटन पर क्लिक करें।

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

Strapi के लिए सर्वर रहित रेडिस कैशिंग

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

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

Strapi के लिए सर्वर रहित रेडिस कैशिंग

सार्वजनिक भूमिका पर क्लिक करें और फिर "अनुच्छेद" अनुमतियों पर क्लिक करें। यहां आपको "ढूंढें" और "ढूंढें" का चयन करने की आवश्यकता है और इस तरह "सहेजें" पर क्लिक करें, कोई भी व्यक्ति जो एपीआई खोल रहा है वह सभी लेखों को सूचीबद्ध कर सकता है और एक लेख लोड कर सकता है।

जब आप ब्राउज़र में लेख संसाधन खोलते हैं, तो आपको हमारा नया लेख देखना चाहिए। डिफ़ॉल्ट 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 कैश जोड़ना

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

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

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

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

अपस्टैश Redis डेटाबेस बनाना

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

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

Strapi के लिए सर्वर रहित रेडिस कैशिंग

REST कैश को कॉन्फ़िगर करना

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

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 डेटाबेस से कॉन्फ़िगर करते हैं। पिछले चरण के यूआरएल में स्ट्रापी के लिए आवश्यक सभी क्रेडेंशियल शामिल हैं।

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

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

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

कैश का परीक्षण करना

सब कुछ ठीक से कॉन्फ़िगर करने के बाद, हम विकास सर्वर को पुनः आरंभ कर सकते हैं:

yarn run develop

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

https://localhost:1337/api/articles

हमारा डेटाबेस पहले अनुरोध को पूरा करेगा, और Upstash Redis निम्नलिखित कार्य करेगा।

निष्कर्ष

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

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


  1. सर्वर रहित और एज के लिए वैश्विक डेटाबेस

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

  1. एज कैशिंग के साथ 5 एमएस ग्लोबल रेडिस लेटेंसी

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

  1. सर्वर रहित रेडिस पर पाइपलाइन रेस्ट एपीआई

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