এই নিবন্ধটি ব্যাখ্যা সহ Redis ক্যাশে ব্যবহার করে একটি নমুনা অ্যাপ্লিকেশন প্রদান করে।
কিভাবে একটি এক্সপ্রেস নোড JS অ্যাপ্লিকেশন তৈরি করতে হয় সে সম্পর্কে অনুগ্রহ করে এই নিবন্ধটি দেখুন, যাতে আমরা আর দেরি না করে দ্রুত বিষয়টিতে যেতে পারি।
কেন ক্যাশিং প্রয়োজন?
যখন একই প্রতিক্রিয়া একাধিকবার পরিবেশন করার প্রয়োজন হয়, তখন বিতরণ করা সার্ভার মেমরিতে ডেটা সংরক্ষণ করুন এবং এটি প্রতিটি কলের জন্য স্টোরেজ স্তর থেকে পুনরুদ্ধার করা ডেটার চেয়ে দ্রুত পুনরুদ্ধার করা যেতে পারে। ক্যাশিং হল একটি অ্যাপ্লিকেশনের একটি ক্ষমতা যা একটি নির্দিষ্ট সময়ের জন্য মানগুলিকে নকল করে এবং তাত্ক্ষণিকভাবে ওয়েব অনুরোধ পরিবেশন করে৷
এই কৌশলগুলি কার্যকর হবে যখন
- একটি তৃতীয় পক্ষের API এবং কলের সংখ্যার জন্য কল করার প্রয়োজন আছে
- ক্লাউড এবং সার্ভারের মধ্যে ডেটা স্থানান্তরের খরচ।
- সমসাময়িক অনুরোধের উপর ভিত্তি করে সার্ভার প্রতিক্রিয়া গুরুত্বপূর্ণ।
রেডিস ক্যাশে কি?
রেডিস-এর মতো কেন্দ্রীভূত বিতরণ ব্যবস্থায় ডেটা ক্যাশে সংরক্ষিত। রেডিসকে একটি ডেটা স্ট্রাকচার সার্ভারও বলা হয়, যার অর্থ হল বিভিন্ন প্রসেস অনেক বেশি লোডিং টাইম ছাড়াই একই সময়ে ডেটা অনুসন্ধান ও পরিবর্তন করতে পারে।
Redis-এর সুবিধা
ডেটা স্ট্রাকচারের বিশেষ বৈশিষ্ট্য হল
- যদিও ডেটা প্রায়ই অনুরোধ করা হয়, পরিবেশন করা হয় এবং পরিবর্তন করা হয়, তবুও ডেটা RAM-তে সংরক্ষণ না করে ডিস্কে সংরক্ষণ করা হবে৷
- উচ্চ-স্তরের প্রোগ্রামিং ভাষার বিপরীতে, বাস্তবায়ন মেমরির সর্বোত্তম ব্যবহারকে হাইলাইট করবে।
- এছাড়াও প্রতিলিপিকরণ, স্থায়িত্বের মাত্রা, ক্লাস্টারিং এবং উচ্চ প্রাপ্যতা (HA) এর মতো বৈশিষ্ট্যগুলি অফার করে৷
- রেডিস জটিল মেমক্যাশেড অপারেশন পরিচালনা করতে পারে যেমন তালিকা, সেট, অর্ডার করা ডেটা সেট ইত্যাদি,
স্থানীয় সিস্টেমে রেডিস ক্লায়েন্ট ব্যবহার করা
রেডিস ব্যবহার করতে, আপনাকে স্থানীয় সিস্টেমে নোড জেএস রেডিস ক্লায়েন্ট ইনস্টল করতে হবে। msi ফাইল (v3.0.504 এই নিবন্ধটি প্রকাশিত তারিখ অনুযায়ী স্থিতিশীল সংস্করণ) Github থেকে ডাউনলোড করা যেতে পারে এবং স্বাভাবিক ইনস্টলেশন প্রক্রিয়ার সাথে এগিয়ে যেতে পারে (Windows OS এর জন্য)।
সর্বশেষ Redis ক্লায়েন্ট এছাড়াও Linux সাবসিস্টেম (WSL) এর সাথে ইনস্টল করা যেতে পারে এবং Redis 6.x সংস্করণ ইনস্টল করা যেতে পারে। এছাড়াও, ডকারাইজ করার জন্য, Mac এবং Linux OS' ডাউনলোডের নির্দেশাবলী অনুসরণ করুন
নিম্নলিখিত কমান্ড দ্বারা Redis ক্লায়েন্ট চালান
redis-server

একটি এক্সপ্রেস নোড JS অ্যাপ্লিকেশন তৈরি করুন
PowerShell বা cmd প্রম্পট উইন্ডোটি খুলুন এবং নির্ধারিত ফোল্ডারে যান।
নিম্নলিখিত কমান্ডটি চালান
npx express expressRedisCaching –hbs

কমান্ড ব্যবহার করে মডিউলগুলি ইনস্টল করুন
npm i এবং নিম্নলিখিত অতিরিক্ত প্যাকেজগুলি ইনস্টল করুন
npm i redis
npm i isomorphic-fetch সমস্ত প্যাকেজ ইনস্টল হয়ে গেলে এবং শুরু করার জন্য প্রস্তুত। আমি “getCached.js নামে একটি নতুন রুট পৃষ্ঠা তৈরি করেছি ” এবং “App.js-এ ম্যাপ করা হয়েছে ” পৃষ্ঠা।
app.use('/getCached', require('./routes/getCached')); এন্ডপয়েন্টে কল করার পর, যুক্তি হল JSON প্লেসহোল্ডার (মক API) সাইট থেকে প্রতিক্রিয়া আনা, রেডিস ক্যাশে ডেটা সংরক্ষণ করা এবং অনুরোধে সাড়া দেওয়া। আরও অনুরোধে, ক্যাশে করা ডেটা পরিবেশন করা হবে৷
৷
const express = require('express')
require('isomorphic-fetch')
const redis = require('redis')
const router = express.Router()
const client = redis.createClient({
host:'127.0.0.1',
port:6379
})
let sourceURL = 'https://jsonplaceholder.typicode.com/todos';
router.get('/',async(req, res)=>{
await client.connect();
const value = await client.get('todos');
if(value){
console.log("from cached data")
res.send(JSON.parse(value))
}
else{
const resp = await fetch(sourceURL)
.then((response) => response.json());
await client.set('todos', JSON.stringify(resp));
console.log("from source data")
res.send(resp);
}
await client.disconnect();
})
module.exports = router রেডিস ব্যবহার করে তৈরি করা বস্তু হল
redis.createClient({ host:’127.0.0.1’, port:6379}); বিকল্পগুলির সাথে
হোস্ট :বর্তমানে Redis স্থানীয় সিস্টেমে উপলব্ধ এবং তাই হোস্ট ডিফল্ট 127.0.0.1
বন্দর :ডিফল্টরূপে Windows OS Redis-এ 6379 পোর্ট বরাদ্দ করছে, কিন্তু একইভাবে কাস্টমাইজ করা যেতে পারে।
এখন কমান্ডটি কার্যকর করার মাধ্যমে অ্যাপটি চালানোর সময় এসেছে
npm start


প্রথম আঘাতে, প্রায় 1156ms এর রেসপন্স টাইম সহ সোর্স API থেকে ডেটা আনা হয় এবং এটি ইন-মেমরি ডেটা স্টোর রেডিস ক্যাশেতে সংরক্ষণ করা হয়েছে। দ্বিতীয় হিটটি ক্যাশে থেকে ডেটা পায় মাত্র ~10 ms বা এমনকি ~6ms এর আনার সময় উল্লেখযোগ্য হ্রাস করে৷
এইভাবে, উদ্দেশ্যটি খুব কম সহজ ধাপে পূরণ করা হয়।