JavaScript (Node.js) में कैशिंग: Redis और अन्य उपकरण
कैशिंग Node.js पर सर्वर एप्लिकेशन के प्रदर्शन को अनुकूलित करने की प्रमुख रणनीतियों में से एक है। यह डेटाबेस पर लोड कम करने, API प्रतिक्रिया समय घटाने और बुनियादी ढांचे पर लागत कम करने में मदद करता है। इस लेख में, हम Node.js के लिए मुख्य कैशिंग टूल्स: Redis, Node-Cache (अंतर्निहित लाइब्रेरी) और Memcached पर चर्चा करेंगे, उनके दृष्टिकोणों की तुलना करेंगे और वास्तविक कोड उदाहरण दिखाएंगे।
Node.js में कैशिंग की आवश्यकता क्यों है?
कैश के बिना, किसी लोकप्रिय संसाधन का प्रत्येक अनुरोध डेटाबेस या बाहरी API पर कई कॉल का कारण बन सकता है। कैश बार-बार अनुरोधित डेटा को तेज़ स्टोरेज (RAM) में सहेजता है, जो प्रदान करता है:
- प्रतिक्रिया समय (विलंबता) को 100-500 ms से घटाकर 1-5 ms करना।
- DB और बाहरी सेवाओं पर अनुरोधों की संख्या कम करना।
- सर्वर की थ्रूपुट क्षमता (RPS) बढ़ाना।
1. Redis — कैशिंग का राजा
Redis एक in-memory की-वैल्यू डेटा स्टोर है, जिसे अक्सर कैश, मैसेज ब्रोकर और डेटाबेस के रूप में उपयोग किया जाता है। Node.js में Redis के साथ काम करने के लिए redis (या ioredis) लाइब्रेरी का उपयोग किया जाता है।
स्थापना और कनेक्शन
npm install redisconst redis = require('redis');const client = redis.createClient({ url: 'redis://localhost:6379'});
client.on('error', (err) => console.error('Redis Error:', err));await client.connect();
// TTL के साथ डेटा कैशिंग का उदाहरणasync function getCachedData(key) { const cached = await client.get(key); if (cached) return JSON.parse(cached);
const freshData = { message: 'Hello from DB', time: Date.now() }; await client.setEx(key, 60, JSON.stringify(freshData)); // TTL 60 सेकंड return freshData;}Node.js के लिए Redis की विशेषताएं
- TTL समर्थन — पुरानी प्रविष्टियों का स्वचालित निष्कासन।
- डेटा संरचनाएं — स्ट्रिंग्स, लिस्ट्स, सेट्स, हैशेज़, सॉर्टेड सेट्स।
- Pub/Sub — रीयल-टाइम सूचना प्रणाली बनाने के लिए।
- क्लस्टरिंग — प्रदर्शन हानि के बिना क्षैतिज स्केलिंग।
2. Node-Cache — बाहरी निर्भरता के बिना हल्का in-memory कैश
Node-Cache Node.js प्रक्रिया की मेमोरी में सीधे डेटा कैश करने के लिए एक सरल लाइब्रेरी है। यह छोटे प्रोजेक्ट्स, माइक्रोसर्विसेज या जब Redis सेटअप नहीं करना चाहते, के लिए आदर्श है।
स्थापना और उदाहरण
npm install node-cacheconst NodeCache = require('node-cache');const myCache = new NodeCache({ stdTTL: 100, checkperiod: 120 });
// डेटा सहेजनाmyCache.set('user:123', { name: 'Alice', role: 'admin' });
// डेटा प्राप्त करनाconst user = myCache.get('user:123');if (user === undefined) { // कैश में डेटा नहीं है — DB से लोड करने की आवश्यकता है console.log('Cache miss');} else { console.log('Cache hit:', user);}
// कुंजी द्वारा हटानाmyCache.del('user:123');
// पूरा कैश साफ़ करनाmyCache.flushAll();Node-Cache के फायदे और नुकसान
- फायदे: बाहरी सर्वर की आवश्यकता नहीं, सरल API, TTL द्वारा स्वचालित सफाई।
- नुकसान: कैश केवल एक प्रक्रिया में संग्रहीत होता है — सर्वर पुनरारंभ होने पर डेटा खो जाता है; कई Node.js इंस्टेंस के बीच उपयोग नहीं किया जा सकता।
3. Memcached — न्यूनतम ओवरहेड के साथ वितरित कैश
Memcached एक और लोकप्रिय in-memory स्टोरेज है, जो कैशिंग के लिए अनुकूलित है। Node.js में अक्सर memcached लाइब्रेरी का उपयोग किया जाता है।
स्थापना और उदाहरण
npm install memcachedconst Memcached = require('memcached');const memcac