JavaScript कैशिंग: Redis, Memcached और इन-बिल्ट समाधान - संपूर्ण गाइड
\n\nकैशिंग वेब एप्लिकेशन की परफॉरमेंस बढ़ाने का एक सबसे अहम टूल है। JavaScript और Node.js के संदर्भ में, सही कैशिंग से डेटाबेस पर लोड कम होता है, API रिस्पॉन्स टाइम घटता है और यूज़र एक्सपीरियंस बेहतर होता है। इस आर्टिकल में हम तीन मुख्य तरीकों को समझेंगे: प्रोसेस मेमोरी में इन-बिल्ट कैशिंग, Memcached और Redis। आप जानेंगे कि कब कौन सा टूल चुनना है, और रेडी-टू-यूज़ कोड उदाहरण भी मिलेंगे।
\n\nNode.js में कैशिंग क्यों ज़रूरी है?
\nNode.js एक सिंगल-थ्रेडेड एनवायरनमेंट है जो एसिंक्रोनस I/O पर काम करता है। डेटाबेस या बाहरी API का हर कॉल समय लेता है। कैशिंग से बार-बार मांगे जाने वाले डेटा को तेज़ स्टोरेज (RAM) में रखा जाता है और बिना भारी ऑपरेशन दोहराए डिलीवर किया जाता है। यह खासतौर पर इनके लिए ज़रूरी है:
\n- \n
- बार-बार आने वाले रिक्वेस्ट में लेटेंसी कम करना \n
- डेटाबेस (PostgreSQL, MongoDB आदि) पर लोड घटाना \n
- सर्वर के कम्प्यूटेशनल रिसोर्सेज बचाना \n
- एप्लिकेशन की थ्रूपुट क्षमता बढ़ाना \n
Node.js में इन-बिल्ट कैशिंग (In-Memory Cache)
\nसबसे आसान तरीका है ग्लोबल स्कोप में Map या Object का उपयोग करना। यह छोटे प्रोजेक्ट्स या एक ही प्रोसेस में रहने वाले डेटा के लिए उपयुक्त है।
उदाहरण: Map के साथ सिंपल कैश
\nconst cache = new Map();\n\nfunction getCachedData(key) {\n if (cache.has(key)) {\n const entry = cache.get(key);\n if (Date.now() < entry.expiry) {\n return entry.data;\n } else {\n cache.delete(key); // एक्सपायर्ड डेटा हटाएं\n }\n }\n return null;\n}\n\nfunction setCachedData(key, data, ttlMs = 60000) {\n cache.set(key, {\n data,\n expiry: Date.now() + ttlMs\n });\n}\n\n// उपयोग:\nsetCachedData('user:123', { name: 'Ravi' }, 30000);\nconst user = getCachedData('user:123');\nconsole.log(user); // { name: 'Ravi' }\n\nफायदे: सरलता, जीरो नेटवर्क लेटेंसी, अतिरिक्त सर्विस इंस्टॉल करने की ज़रूरत नहीं।
\nनुकसान: डेटा कई प्रोसेस/सर्वरों के बीच शेयर नहीं होता, एक प्रोसेस की मेमोरी तक सीमित।
Memcached: डिस्ट्रीब्यूटेड कैशिंग
\nMemcached एक हाई-परफॉरमेंस डिस्ट्रीब्यूटेड इन-मेमोरी कैशिंग सिस्टम है। यह सरल, तेज़ है और छोटे डेटा (जैसे सेशन या HTML फ्रैगमेंट) स्टोर करने के लिए बढ़िया है। Node.js के लिए लोकप्रिय memcached मॉड्यूल उपलब्ध है।
इंस्टॉलेशन और कनेक्शन
\nnpm install memcached\n\nMemcached के साथ काम करने का उदाहरण
\nconst Memcached = require('memcached');\nconst memcached = new Memcached('localhost:11211');\n\n// TTL (सेकंड में) के साथ डेटा लिखें\nmemcached.set('user:456', { name: 'Sita' }, 3600, (err) => {\n if (err) console.error('लिखने में त्रुटि:', err);\n});\n\n// डेटा पढ़ें\nmemcached.get('user:456', (err, data) => {\n if (err) {\n console.error('पढ़ने में त्रुटि:', err);\n } else if (data) {\n console.log('कैश से डेटा:', data);\n } else {\n console.log('कैश खाली है — डेटा नहीं मिला');\n }\n});\n\n// एप्लिकेशन बंद होने पर कनेक्शन बंद करें\nprocess.on('SIGINT', () => {\n memcached.end();\n});\n\nफायदे: सरल API, बहुत तेज़, सर्वरों के बीच डिस्ट्रीब्यूशन।
\nनुकसान: बिल्ट-इन रेप्लिकेशन नहीं, रीस्टार्ट पर डेटा खत्म, सीमित डेटा टाइप्स।
Redis: एडवांस्ड फीचर्स के साथ पावरफुल कैशिंग
\nRedis सिर्फ कैश नहीं, बल्कि एक पूर्ण इन-मेमोरी डेटा स्टोर है जो जटिल स्ट्रक्चर (स्ट्रिंग्स, लिस्ट्स, सेट्स, हैशेज़) को सपोर्ट करता है। यह पर्सिस्टेंसी, रेप्लिकेशन और ट्रांजैक्शन भी सपोर्ट करता है। Node.js के लिए redis लाइब्रेरी का उपयोग करें।
इंस्टॉलेशन
\nnpm install redis\n\n