কম্পিউটার

স্ট্রাপির জন্য সার্ভারহীন রেডিস ক্যাশিং

সময়মতো একটি প্রজেক্ট ডেলিভারি করার মানে হল যে আপনাকে যতটা সম্ভব বিদ্যমান প্রযুক্তির সুবিধা নিতে হবে। আপনার প্রতিটি সিদ্ধান্ত যা একটি কাস্টম বাস্তবায়নের দিকে পরিচালিত করে তা অবশ্যই বিবেচনা করতে হবে যে আপনাকে নিজের সমাধান বজায় রাখতে হবে। এই কারণেই Strapi-এর মতো ওপেন-সোর্স টুলগুলি হল আপনার পরবর্তী প্রোজেক্টের জন্য REST API তৈরি করার উপায়৷

Strapi একটি অত্যাধুনিক মাথাবিহীন CMS। এটি আপনাকে একটি গ্রাফিকাল ইন্টারফেসের সাথে আপনার স্কিমাকে সংজ্ঞায়িত করতে দেয়, যাতে এমনকি অ-প্রযুক্তিগত লোকেরাও ডেটা মডেল করতে পারে। আপনার ডেভেলপমেন্ট টিম ব্যাকএন্ড বাস্তবায়ন সম্পর্কে চিন্তা না করে ওয়েব এবং মোবাইল অ্যাপ তৈরি এবং নতুন বৈশিষ্ট্য প্রদানের উপর ফোকাস করতে পারে। সর্বোপরি, একটি বড় ওপেন সোর্স সম্প্রদায় স্ট্র্যাপি বজায় রাখে।

আপনার ব্যাকএন্ডকে ত্বরান্বিত করা

এখন, Strapi SQLite ব্যবহার করার সময় প্রতিক্রিয়া প্রদানের ক্ষেত্রে তুলনামূলকভাবে দ্রুত, কিন্তু আপনার ডেটা এবং ব্যবহারকারীর ভিত্তি বাড়ার সাথে সাথে এটি শুরু করার সেরা সমাধান হতে পারে না। আপনি বাজারে আসার পরে, আপনি হয়তো হাজার হাজার ব্যবহারকারীর সাথে সারা বিশ্বে বিতরণ করতে পারেন৷

সুতরাং, আপনাকে আপনার স্ট্র্যাপি স্কেল আউট করতে হবে এবং এর ফলে আপনার ডাটাবেস স্থাপনার সমস্ত লোড পরিচালনা করতে হবে। আপনি যদি কিছু ক্যাশে প্লাগ ইন করতে পারেন তাহলে কি ভালো হবে না?

REST ক্যাশে লিখুন

Strapi REST Cache হল Strapi প্লাগইনগুলির একটি সংগ্রহ। তারা আপনাকে আপনার Strapi অ্যাপে LRU ক্যাশিং যোগ করতে সাহায্য করে, প্রকৃত ডাটাবেস অনুরোধ কমিয়ে দেয়।

মেমরি, Couchbase, এবং Redis সমর্থিত, এবং আপনি এমনকি একটি কাস্টম প্রদানকারী লিখতে পারেন. এখানে উত্তেজনাপূর্ণ অংশ হল Redis ক্যাশে প্রদানকারী যা আমাদেরকে কয়েক মিনিটের মধ্যে Upstash Redis এর সাথে সংযোগ করতে দেয়!

আপনি Redis ব্যবহার করবেন এমন বেশিরভাগ পরিস্থিতিতে আপনি Upstash Redis ব্যবহার করতে পারেন। পার্থক্য হল আপনি কয়েকটি ক্লিকে Upstash Redis সেট আপ করতে পারেন। এটি বিশ্বব্যাপী প্রতিলিপির সাথেও আসে, তাই আপনার স্ট্র্যাপি দৃষ্টান্তগুলি নিকটতম প্রতিরূপে পাঠানো হবে, যা একটি দ্রুত ক্যাশের জন্য অত্যন্ত গুরুত্বপূর্ণ। এবং এটি সার্ভারহীন, তাই আপনি যা ব্যবহার করেন তার জন্যই আপনি অর্থ প্রদান করেন।

সুতরাং, আসুন দেখি কিভাবে আমরা স্ট্র্যাপিকে আপস্ট্যাশ রেডিস এর সাথে চালু করতে পারি!

পূর্বশর্ত

এই টিউটোরিয়ালের জন্য, আপনার একটি Upstash অ্যাকাউন্ট এবং একটি Node.js ইনস্টলেশন প্রয়োজন। আপনার সুতারও প্রয়োজন, যেটি স্ট্রাপির পছন্দের প্যাকেজ ম্যানেজার।

একটি Strapi প্রকল্প তৈরি করা হচ্ছে

আপনার যদি ইতিমধ্যেই একটি বিদ্যমান স্ট্রাপি প্রকল্প থাকে তবে আপনি সরাসরি "রস্ট ক্যাশে যুক্ত করা" বিভাগে যেতে পারেন। নিম্নলিখিত পদক্ষেপগুলি শুধুমাত্র কাজ করার জন্য ডেটা সেট আপ করার জন্য৷

প্রথম ধাপটি Strapi এর সাথে একটি নতুন ব্যাকএন্ড তৈরি করছে। আপনি নিম্নলিখিত কমান্ড দিয়ে এটি করতে পারেন:

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

কমান্ড শেষ হওয়ার পরে, Strapi ব্রাউজার খুলবে এবং একটি ডেটা মডেল এবং প্রথম সামগ্রী তৈরি করতে অ্যাডমিন লগইন বিশদ জানতে চাইবে৷

কন্টেন্ট-টাইপ বিল্ডারের সাথে মডেলিং ডেটা

আপনি লগ ইন করার পরে, আপনি Strapi বিষয়বস্তু-টাইপ বিল্ডারের সাথে আপনার প্রথম ডেটা সংগ্রহের মডেল করতে পারেন। চিত্র 1 দেখায় যে আপনি Strapi অ্যাডমিন কনসোলে কন্টেন্ট-টাইপ বিল্ডার কোথায় পাবেন।

স্ট্রাপির জন্য সার্ভারহীন রেডিস ক্যাশিং

"নতুন সংগ্রহের ধরন তৈরি করুন" লিঙ্কে ক্লিক করুন এবং একটি নতুন প্রকার তৈরি করুন৷ এটিকে "নিবন্ধ" নাম দিন এবং দুটি সাধারণ পাঠ্য ক্ষেত্র যোগ করুন। একটি ক্ষেত্র "শিরোনাম" নামক ছোট পাঠ্যের জন্য এবং একটি "সামগ্রী" নামক দীর্ঘ পাঠ্যের জন্য

চিত্র 2 দেখায় "সংরক্ষণ" বোতামে ক্লিক করার আগে টাইপটি কেমন হওয়া উচিত৷

স্ট্রাপির জন্য সার্ভারহীন রেডিস ক্যাশিং

এর পরে, আমাদের সেই বিষয়বস্তুর প্রকারের একটি প্রকৃত উদাহরণ প্রয়োজন৷

কন্টেন্ট ম্যানেজার দিয়ে কন্টেন্ট তৈরি করা

আপনি চিত্র 1-এ বিষয়বস্তু পরিচালকের অবস্থান দেখতে পারেন। এটিতে নেভিগেট করুন এবং উপরের ডানদিকে "নতুন এন্ট্রি তৈরি করুন" বোতামে ক্লিক করুন।

চিত্র 3-এ, আপনি নতুন কন্টেন্ট এন্ট্রি UI দেখতে পারেন। "সংরক্ষণ করুন" এবং "প্রকাশ করুন" বোতামে ক্লিক করতে ভুলবেন না; অন্যথায়, আপনার কাছে একটি ব্যক্তিগত খসড়া থাকবে যা সর্বজনীন API এর মাধ্যমে অ্যাক্সেসযোগ্য নয়।

স্ট্রাপির জন্য সার্ভারহীন রেডিস ক্যাশিং

কন্টেন্ট-টাইপের জন্য অনুমতি সেট করা

আমাদের কাছে একটি নিবন্ধের ধরন এবং একটি প্রকৃত নিবন্ধ রয়েছে, কিন্তু এটি জনসাধারণের কাছে অ্যাক্সেসযোগ্য নয়৷ এটি পরিবর্তন করতে, আমাদের পাবলিক ভূমিকা আপডেট করতে হবে। চিত্র 4 দেখায় যেখানে আপনি নেভিগেশনে এটি খুঁজে পেতে পারেন৷

স্ট্রাপির জন্য সার্ভারহীন রেডিস ক্যাশিং

সর্বজনীন ভূমিকাতে ক্লিক করুন এবং তারপরে "আর্টিকেল" অনুমতিগুলিতে ক্লিক করুন৷ এখানে আপনাকে "find" এবং "findOne" নির্বাচন করতে হবে এবং এইভাবে "সংরক্ষণ করুন" এ ক্লিক করতে হবে, যে কেউ এই 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 ক্যাশে যোগ করা হচ্ছে

অবশেষে, 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 কনসোল খুলুন এবং "ডেটাবেস তৈরি করুন" বোতামে ক্লিক করুন৷

তৈরির প্রক্রিয়া শেষ হওয়ার পরে, আপনি ডাটাবেস URL ধরতে পারেন, যা শুধুমাত্র সেকেন্ড নিতে হবে। "নোড" ট্যাব বেছে নিন, এবং চিত্র 5-এ দেখানো কোড উদাহরণ থেকে URLটি কপি করুন।

স্ট্রাপির জন্য সার্ভারহীন রেডিস ক্যাশিং

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 ডাটাবেসের সাথে সংযোগ কনফিগার করি। আগের ধাপের URL-এ Strapi-এর প্রয়োজনীয় সমস্ত শংসাপত্র রয়েছে৷

বিশ্রাম-ক্যাশে ক্ষেত্রে, আমরা ক্যাশেকে বলি যে এটি কোন প্রদানকারীর ব্যবহার করা উচিত এবং কোন বিষয়বস্তুর ধরন ক্যাশে করা উচিত। আমাদের ক্ষেত্রে, এটি শুধুমাত্র নিবন্ধের বিষয়বস্তুর ধরন। hitpass: false নিশ্চিত করে যে বিষয়বস্তু সবসময় ক্যাশ করা হয়, এমনকি যদি কিছু প্রমাণীকরণ ঘটে থাকে।

আপনি যদি debug: true মন্তব্যটি আন-কমেন্ট করেন , আপনি কিছু ডিবাগ আউটপুট দেখতে পাবেন। এই আউটপুট ক্যাশে কাজ করে কিনা তা দেখতে সহজ করে তোলে।

স্ট্রাপি ডিফল্ট হিসাবে SQLite ব্যবহার করে, যা আপনার ডেভেলপমেন্ট কম্পিউটারে ইন-প্রসেস চালায়, তাই এটি এই সিস্টেম থেকে দূরবর্তী কিলোমিটার দূরে Upstash Redis এর চেয়ে দ্রুততর হবে। একটি বাস্তব ডাটাবেস সার্ভার সহ একটি উত্পাদন পরিবেশে জিনিসগুলি বেশ আলাদা দেখাবে৷

ক্যাশে পরীক্ষা করা হচ্ছে

আমরা সবকিছু সঠিকভাবে কনফিগার করার পরে, আমরা বিকাশ সার্ভারটি পুনরায় চালু করতে পারি:

yarn run develop

সার্ভার চালু হয়ে গেলে, আমরা এই URL দিয়ে আবার অ্যাক্সেস করতে পারি:

https://localhost:1337/api/articles

আমাদের ডাটাবেস প্রথম অনুরোধ পরিবেশন করবে, এবং Upstash Redis নিম্নলিখিত কাজ করবে।

উপসংহার

যখন আমরা Upstash Redis ব্যবহার করি তখন একটি Strapi স্থাপনার গতি বাড়ানো মাত্র কয়েক মিনিট সময় নেয়। আপস্ট্যাশ কনসোল আমাদের একটি URL দেয় যা আমরা কেবল কনফিগারে আটকাতে পারি, এবং এটিই।

প্রথম Upstash Redis ডাটাবেস এমনকি বিনামূল্যে, তাই এটি পরীক্ষা করে দেখুন; কোন ক্রেডিট কার্ডের প্রয়োজন নেই!


  1. সার্ভারলেস রেডিসের সাথে রেন্ডার ব্যবহার করা

  2. সার্ভারহীন এবং প্রান্তের জন্য গ্লোবাল ডাটাবেস

  3. এজ ক্যাশিং সহ 5 ms গ্লোবাল রেডিস লেটেন্সি

  4. সার্ভারলেস রেডিসে পাইপলাইন REST API