TypeScript में कैशिंग: Redis, Memcached और in-memory समाधान

शुरुआती लोगों के लिए ऑनलाइन Python प्रशिक्षक

Python आसानी से सीखें बिना सिद्धांत के बोझ के। स्वचालित जांच के साथ व्यावहारिक कार्य हल करें और ब्राउज़र में सीधे कोड लिखें।

पाठ्यक्रम शुरू करें

TypeScript में कैशिंग: Redis, Memcached और in-memory समाधान



कैशिंग वेब एप्लिकेशन के प्रदर्शन को अनुकूलित करने के लिए प्रमुख तंत्रों में से एक है। TypeScript और Node.js इकोसिस्टम में कैशिंग को व्यवस्थित करने के लिए कई सिद्ध दृष्टिकोण मौजूद हैं: सरल in-memory समाधानों से लेकर Redis और Memcached पर आधारित वितरित सिस्टम तक। इस लेख में हम लोकप्रिय लाइब्रेरीज़, उनकी स्थापना, कॉन्फ़िगरेशन और उपयोग के उदाहरणों पर विस्तार से चर्चा करेंगे।



कैशिंग की आवश्यकता क्यों है?

कैशिंग सर्वर प्रतिक्रिया समय को कम करने, डेटाबेस और बाहरी API पर लोड कम करने और उपयोगकर्ता अनुभव को बेहतर बनाने में मदद करता है। मुख्य उपयोग परिदृश्य:

  • महंगी गणनाओं के परिणामों को संग्रहीत करना
  • बाहरी API से प्रतिक्रियाओं को कैश करना
  • उपयोगकर्ता सत्रों को संग्रहीत करना
  • HTML पृष्ठों के टुकड़ों को कैश करना


1. ioredis — Redis के लिए उन्नत क्लाइंट

ioredis Node.js और TypeScript में Redis के साथ काम करने के लिए सबसे लोकप्रिय लाइब्रेरी है। यह क्लस्टरिंग, Pub/Sub, ट्रांज़ैक्शन और स्वचालित पुन: कनेक्शन का समर्थन करता है।



स्थापना:

npm install ioredisnpm install @types/ioredis --save-dev


TypeScript के साथ बुनियादी उपयोग:

import Redis from 'ioredis';

// स्थानीय Redis से कनेक्शनconst redis = new Redis({ host: 'localhost', port: 6379, retryStrategy: (times) => Math.min(times * 50, 2000)});

// डेटा कैश करने का फ़ंक्शनasync function getCachedData(key: string): Promise<string | null> { const cached = await redis.get(key); if (cached) { console.log('कैश से डेटा'); return cached; } // डेटाबेस से डेटा प्राप्त करने का अनुकरण const data = `Data for ${key} at ${new Date().toISOString()}`; await redis.setex(key, 3600, data); // TTL 1 घंटा return data;}

// उपयोग का उदाहरण(async () => { const result = await getCachedData('user:123'); console.log(result);})();


ऑब्जेक्ट कैशिंग:

interface User {    id: number;    name: string;    email: string;}

async function cacheUser(user: User): Promise<void> { await redis.setex(`user:${user.id}`, 3600, JSON.stringify(user));}

async function getUserFromCache(id: number): Promise<User | null> { const cached = await redis.get(`user:${id}`); return cached ? JSON.parse(cached) : null;}


2. node-cache — सरल in-memory कैशिंग

node-cache Node.js प्रक्रिया की रैम में डेटा संग्रहीत करने के लिए एक हल्की लाइब्रेरी है। यह छोटे प्रोजेक्ट या प्रोटोटाइप के लिए आदर्श है जहाँ वितरित कैशिंग की आवश्यकता नहीं है।



स्थापना:

npm install node-cachenpm install @types/node-cache --save-dev


उपयोग का उदाहरण:

import NodeCache from 'node-cache';

const myCache = new NodeCache({ stdTTL: 600, // डिफ़ॉल्ट जीवनकाल (सेकंड) checkperiod: 120 // पुरानी कुंजियों की जाँच की अवधि});

// डेटा सहेजना और प्राप्त करनाmyCache.set('key1', { value: 42 });const value = myCache.get('key1');console.log(value); // { value: 42 }

// कुंजी के अस्तित्व की जाँचif (myCache.has('key1')) { console.log('कुंजी मौजूद है');}

// कुंजी द्वारा हटानाmyCache.del('key1');

// आँकड़े प्राप्त करनाconst stats = myCache.getStats();console.log(`कैश में कुंजियाँ: ${stats.keys}`);


3. lru-cache — LRU नीति वाला कैश

lru-cache Least Recently Used निष्कासन एल्गोरिदम के साथ कैश का कार्यान्वयन है। यह संग्रहीत प्रविष्टियों की संख्या को सीमित करता है, स्वचालित रूप से सबसे पुरानी प्रविष्टियों को हटाता है। यह निश्चित आकार के कैशिंग के लिए उत्कृष्ट है।



स्थापना:

npm install lru-cache
                
    
    

अनुशंसाएँ