Node.js में कैशिंग: Redis और एप्लिकेशन को तेज़ करने के विकल्प

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

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

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

JavaScript (Node.js) में कैशिंग: Redis और अन्य

\n\n

कैशिंग Node.js पर वेब एप्लिकेशन के प्रदर्शन को बढ़ाने के लिए प्रमुख उपकरणों में से एक है। यह सर्वर प्रतिक्रिया समय को कम करने, डेटाबेस और बाहरी API पर लोड कम करने और उपयोगकर्ता अनुभव को बेहतर बनाने में मदद करता है। इस लेख में, हम लोकप्रिय लाइब्रेरी और कैशिंग दृष्टिकोणों पर चर्चा करेंगे: अंतर्निहित समाधानों से लेकर शक्तिशाली Redis तक।

\n\n

Node.js में कैशिंग की आवश्यकता क्यों है?

\n

कैशिंग के बिना, सर्वर पर प्रत्येक अनुरोध बार-बार गणना, DB या बाहरी सेवाओं के लिए अनुरोध कर सकता है। इससे प्रतिक्रिया समय और संसाधन खपत बढ़ जाती है। कैश बार-बार अनुरोधित डेटा को तेज़ स्टोरेज (RAM या in-memory DB) में संग्रहीत करता है, जो निम्नलिखित की अनुमति देता है:

\n
    \n
  • प्रतिक्रियाओं को तेज़ करना — मेमोरी से पढ़ना डिस्क से पढ़ने की तुलना में 100-1000 गुना तेज़ है।
  • \n
  • लोड कम करना — डेटाबेस कम अनुरोधों को संसाधित करता है।
  • \n
  • बजट बचाना — क्लाउड सेवाओं पर कम संसाधन।
  • \n
\n\n

1. Redis — औद्योगिक मानक

\n

Redis एक उच्च-प्रदर्शन in-memory डेटा स्टोर है जो डेटा संरचनाओं (स्ट्रिंग्स, हैश, लिस्ट्स, सेट्स) का समर्थन करता है। Node.js के लिए redis या ioredis पैकेज का उपयोग किया जाता है।

\n\n

स्थापना और कनेक्शन

\n
npm install redis
\n\n
const redis = require('redis');\nconst client = redis.createClient({\n  url: 'redis://localhost:6379'\n});\n\nclient.on('error', (err) => console.error('Redis Client Error', err));\nclient.connect();
\n\n

बुनियादी संचालन

\n
// TTL (जीवनकाल) के साथ लिखना\nawait client.setEx('user:123', 3600, JSON.stringify({name: 'Alice', role: 'admin'}));\n\n// पढ़ना\nconst cached = await client.get('user:123');\nif (cached) {\n  console.log('कैश से:', JSON.parse(cached));\n} else {\n  // DB से अनुरोध\n}
\n\n

उन्नत सुविधाएँ

\n
    \n
  • पैटर्न के अनुसार अमान्यकरण — user:* उपसर्ग वाली सभी कुंजियाँ हटाना।
  • \n
  • Pub/Sub — इंस्टेंस के बीच कैश परिवर्तनों की सूचनाएँ।
  • \n
  • Redis Cluster — क्षैतिज स्केलिंग।
  • \n
\n\n

2. node-cache — बाहरी निर्भरता के बिना in-memory कैश

\n

छोटे प्रोजेक्ट या प्रोटोटाइप के लिए node-cache लाइब्रेरी उपयुक्त है। यह एक Node.js प्रक्रिया के भीतर काम करता है और Redis की स्थापना की आवश्यकता नहीं है।

\n\n

स्थापना

\n
npm install node-cache
\n\n

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

\n
const NodeCache = require('node-cache');\nconst myCache = new NodeCache({ stdTTL: 600, checkperiod: 120 });\n\n// डेटा सहेजना\nmyCache.set('posts:recent', postsData, 3600);\n\n// पढ़ना\nconst cached = myCache.get('posts:recent');\nif (cached) {\n  return cached;\n} else {\n  const fresh = await fetchPostsFromDB();\n  myCache.set('posts:recent', fresh);\n  return fresh;\n}
\n\n

विशेषताएँ

\n
    \n
  • TTL (time-to-live) का सरल कॉन्फ़िगरेशन।
  • \n
  • पुरानी प्रविष्टियों की स्वचालित सफाई।
  • \n
  • वितरित सिस्टम के लिए उपयुक्त नहीं (डेटा केवल एक प्रक्रिया में रहता है)।
  • \n
\n\n

3. memory-cache — हल्का विकल्प

\n

memory-cache Node.js के लिए एक और सरल in-memory कैश है। यह न्यूनतम API द्वारा विशेषता है।

\n\n
const cache = require('memory-cache');\n\n// लिखना\ncache.put('api:weather', weatherData, 300000); // 5 मिनट\n\n// पढ़ना\nconst data = cache.get('api:weather');\nif (!data) {\n  // पुनः अनुरोध\n}
\n\n

4. कैशिंग रणनीतियाँ

\n

रणनीति का चयन डेटा के प्रकार और अद्यतितता की आवश्यकताओं पर निर्भर करता है:

\n\n
    \n
  • Cache-Aside (Lazy Loading) — एप्लिकेशन पहले कैश की जाँच करता है, मिस होने पर डेटा लोड करता है और कैश में सहेजता है। सबसे लोकप्रिय दृष्टिकोण।
  • \n
  • Write-Through — डेटा लिख

अनुशंसाएँ