TypeScript में कैशिंग: Redis, Memcached और इन-बिल्ट समाधान - पूरी गाइड

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

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

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

TypeScript में कैशिंग: Redis, Memcached और इन-बिल्ट समाधान - पूरी गाइड

\n\n

कैशिंग वेब एप्लिकेशन और सर्विसेज की परफॉरमेंस बढ़ाने का एक सबसे कारगर तरीका है। TypeScript और Node.js इकोसिस्टम में डेवलपर्स के पास कई विकल्प हैं - पावरफुल एक्सटर्नल सिस्टम (Redis, Memcached) से लेकर हल्के इन-बिल्ट समाधान तक। इस आर्टिकल में हम तीनों तरीकों को विस्तार से समझेंगे, TypeScript में प्रैक्टिकल कोड उदाहरण देंगे, और आपके प्रोजेक्ट के लिए सबसे सही स्ट्रेटेजी चुनने में मदद करेंगे।

\n\n

TypeScript में कैशिंग क्यों ज़रूरी है?

\n

कैशिंग से सर्वर का रिस्पॉन्स टाइम कम होता है, डेटाबेस और एक्सटर्नल API पर लोड घटता है, और बार-बार आने वाले रिक्वेस्ट में देरी कम होती है। Node.js पर चलने वाले TypeScript में कैशिंग खासतौर पर इनके लिए फायदेमंद है:

\n
    \n
  • महंगे कैलकुलेशन के रिजल्ट स्टोर करना;
  • \n
  • एक्सटर्नल API के रिस्पॉन्स को कैश करना;
  • \n
  • यूज़र सेशन को सेव करना;
  • \n
  • डेटाबेस पर क्वेरी की संख्या कम करना।
  • \n
\n\n

1. TypeScript में इन-बिल्ट कैशिंग समाधान

\n

छोटे प्रोजेक्ट या प्रोटोटाइप के लिए बिना कोई एक्सट्रा पैकेज इंस्टॉल किए Node.js के बिल्ट-इन फीचर्स का उपयोग कर सकते हैं।

\n\n

1.1. Map का उपयोग

\n

सबसे आसान तरीका है Map ऑब्जेक्ट या सिंपल ऑब्जेक्ट का इस्तेमाल। लेकिन यह कैश सिर्फ एक प्रोसेस की मेमोरी में रहता है और रीस्टार्ट होने पर खत्म हो जाता है।

\n
// Map पर आधारित सिंपल कैश\nclass SimpleCache<T> {\n    private cache = new Map<string, T>();\n\n    get(key: string): T | undefined {\n        return this.cache.get(key);\n    }\n\n    set(key: string, value: T): void {\n        this.cache.set(key, value);\n    }\n\n    clear(): void {\n        this.cache.clear();\n    }\n}\n\n// उपयोग का उदाहरण\nconst cache = new SimpleCache<string>();\ncache.set('user:1', 'Alice');\nconsole.log(cache.get('user:1')); // Alice
\n\n

1.2. TTL (Time-To-Live) के साथ कैश

\n

एक और एडवांस्ड वर्शन - जिसमें तय समय के बाद एंट्री अपने आप डिलीट हो जाती है।

\n
// TTL के साथ कैश\nclass TtlCache<T> {\n    private cache = new Map<string, { value: T; expiry: number }>();\n\n    get(key: string): T | undefined {\n        const item = this.cache.get(key);\n        if (!item) return undefined;\n        if (Date.now() > item.expiry) {\n            this.cache.delete(key);\n            return undefined;\n        }\n        return item.value;\n    }\n\n    set(key: string, value: T, ttlMs: number): void {\n        this.cache.set(key, {\n            value,\n            expiry: Date.now() + ttlMs,\n        });\n    }\n}\n\n// उदाहरण\nconst ttlCache = new TtlCache<number>();\nttlCache.set('price', 100, 5000); // 5 सेकंड तक जीवित\nsetTimeout(() => console.log(ttlCache.get('price')), 6000); // undefined
\n\n

2. TypeScript में Redis के साथ कैशिंग

\n

Redis एक लोकप्रिय in-memory डेटा स्टोर है जो एडवांस्ड डेटा स्ट्रक्चर, pub/sub और पर्सिस्टेंसी को सपोर्ट करता है। TypeScript के लिए ioredis पैकेज का उपयोग किया जाता है।

\n\n

2.1. इंस्टॉलेशन और कनेक्शन

\n
npm install ioredis\nnpm install @types/ioredis --save-dev
\n
import Redis from 'ioredis';\n\nconst redis = new Redis({\n    host: 'localhost',\n    port: 6379,\n});\n\nredis.on('connect', () => console.log('Redis से कनेक्ट हुआ'));\nredis.on('error', (err) => console.error('Redis एरर', err));
\n\n

2.2. बेसिक set/get ऑपरेशन

\n
// वैल्यू सेव करें\nawait redis.set('user:1:name', 'Alice');\n\n// वैल्यू प्राप्त करें\nconst name = await redis.get('user:1:name');\nconsole.log(name); // Alice\n\n// TTL सेट करें (सेकंड में)\nawait redis.setex('session:123', 3600, 'active');
\n\n

2.3. ऑब्जेक्ट (JSON) के साथ काम करना

\n
// ऑब्जेक्ट सेव करें\nconst user = { id: 1, name: 'Alice', email: 'alice@example.com' };\nawait redis.set('user:1', JSON.stringify(user));\n\n// पढ़ें और पार्स करें\nconst r                

ब्लॉग

पुस्तक अनुशंसाएँ