এই নিবন্ধে রেডিস ক্যাশ ব্যবহার করে একটি স্যাম্পল অ্যাপ্লিকেশন সাথে ব্যাখ্যা প্রদান করা হয়েছে।
Express Node JS অ্যাপ্লিকেশন কীভাবে তৈরি করতে হয় সেটি জানতে এই নিবন্ধটি দেখুন, যাতে আমরা দেরি না করে সরাসরি টপিকে যেতে পারি।
ক্যাশিং কেন প্রয়োজন?
যখন একই রেসপন্স একাধিকবার সার্ভ করতে হয়, তবে ডেটাকে ডিস্ট্রিবিউটেড সার্ভার মেমরিতে সংরক্ষণ করলে এটি স্টোরেজ লেয়ার থেকে প্রতিবার ডেটা রিট্রিভ করার চেয়ে দ্রুত রিট্রিভ করা যায়। ক্যাশিং হলো একটি অ্যাপ্লিকেশনের ক্ষমতা যা একটি নির্দিষ্ট সময়ের জন্য মানগুলো ডুপ্লিকেট করে এবং ওয়েব রিকোয়েস্ট tức খানে সার্ভ করে।
এই কৌশলগুলো কার্যকর হবে যখন
- থার্ড পার্টি API কল করার প্রয়োজন হয় এবং কল কাউন্ট গুরুত্বপূর্ণ
- ক্লাউড এবং সার্ভারের মধ্যে ডেটা ট্রান্সফার খরচ
- সার্ভার রেসপন্স কনকারেন্ট রিকোয়েস্টের উপর ভিত্তি করে ক্রিটিক্যাল
রেডিস ক্যাশ কী?
রেডিসের মতো একটি সেন্ট্রালাইজড ডিস্ট্রিবিউটেড সিস্টেমে সংরক্ষিত ডেটা ক্যাশ। রেডিসকে ডেটা স্ট্রাকচার সার্ভারও বলা হয়, যার অর্থ 다양한 প্রসেস একই সময়ে ডেটা কোয়েরি এবং মডিফাই করতে পারে বিনা বেশি লোডিং টাইমের।
রেডিসের সুবিধা
ডেটা স্ট্রাকচার자의 বিশেষ বৈশিষ্ট্যগুলো হলো
- যদিও ডেটা ঘন ঘন অনুরোধ, সার্ভ এবং মডিফাই করা হয়, তবুও ডেটা RAM-এ না সংরক্ষণ করে ডিস্কে সংরক্ষিত হয়।
- উচ্চস্তরের প্রোগ্রামিং ভাষার বিপরীতে, বাস্তবায়ন মেমরি অপ্টিমাল ব্যবহারে ফোকাস করে।
- রেপ্লিকেশন, ডিউরাবিলিটির লেভেল, ক্লাস্টারিং এবং হাই আভেইলেবিলিটি (HA)-এর মতো ফিচারও অফার করে।
- রেডিস জটিল Memcached অপারেশনস যেমন Lists, Sets, অর্ডার্ড ডেটা সেট ইত্যাদি হ্যান্ডল করতে পারে।
লোকাল সিস্টেমে রেডিস ক্লায়েন্ট ব্যবহার
রেডিস ব্যবহার করতে, আপনাকে লোকাল সিস্টেমে Node JS রেডিস ক্লায়েন্ট ইনস্টল করতে হবে। এই আর্টিকেল প্রকাশের তারিখ itibরে msi ফাইল (v3.0.504 স্টেবল ভার্সন) GitHub থেকে ডাউনলোড করে সাধারণ ইনস্টলেশন প্রসেস অনুসরণ করুন (Windows OS-এর জন্য)।
লেটেস্ট রেডিস ক্লায়েন্ট Windows Subsystem for Linux (WSL) ব্যবহার করে এবং রেডিস ৬.x ভার্সন ইনস্টল করেও ইনস্টল করা যায়। ডকারাইজিং, Mac এবং Linux OS-এর জন্য ডাউনলোডস পেজের নির্দেশনা অনুসরণ করুন।
নিচের কমান্ড দিয়ে রেডিস ক্লায়েন্ট চালান
redis-server

Express Node 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 Placeholder (মক 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});
অপশনসহ
host: বর্তমানে রেডিস লোকাল সিস্টেমে উপলব্ধ তাই হোস্ট ডিফল্ট 127.0.0.1
port: ডিফল্ট উইন্ডোজ OS রেডিসের জন্য 6379 পোর্ট অ্যালোকেট করে, কিন্তু একটিকে কাস্টমাইজ করা যায়।
এখন অ্যাপ চালানোর সময়: নিচের কমান্ড এক্সিকিউট করুন
npm start


প্রথম হিটে, ডেটা সোর্স API থেকে প্রায় ১১৫৬ms রেসপন্স টাইমে ফেচ করা হয়েছে এবং একটিইন-মেমরি ডেটা স্টোর রেডিস ক্যাশে সংরক্ষিত হয়েছে। দ্বিতীয় হিটে ক্যাশ থেকে ডেটা পাওয়া যাচ্ছে রিমার্কেবল ফেচ টাইম রিডাকশন প্রায় ~10 ms অথবা ~6ms-এ।
অতএব, খুব কম সহজ ধাপে উদ্দেশ্য সাফল্য হয়েছে।