खोज…


टिप्पणियों

हमने नोड_्रेडिस में मूल और सबसे अधिक उपयोग किए जाने वाले संचालन को कवर किया है। आप Redis की पूरी शक्ति का लाभ उठाने के लिए और वास्तव में परिष्कृत Node.js एप्लिकेशन बनाने के लिए इस मॉड्यूल का उपयोग कर सकते हैं। आप इस लाइब्रेरी के साथ कई दिलचस्प चीजें बना सकते हैं जैसे कि एक मजबूत कैशिंग परत, एक शक्तिशाली पब / उप संदेश प्रणाली और बहुत कुछ। पुस्तकालय के बारे में अधिक जानने के लिए उनके दस्तावेज देखें

शुरू करना

नोड_रेडिस, जैसा कि आपने अनुमान लगाया है, Node.js के लिए रेडिस क्लाइंट है । आप निम्न कमांड का उपयोग करके इसे npm के माध्यम से स्थापित कर सकते हैं।

npm install redis

एक बार जब आप नोड_्रेडिस मॉड्यूल स्थापित कर लेते हैं तो आप जाने के लिए अच्छे हैं। आइए एक साधारण फ़ाइल बनाएं, app.js, और देखें कि Node.js. से Redis से कैसे जुड़ें

app.js

var redis = require('redis');
client = redis.createClient(); //creates a new client

डिफ़ॉल्ट रूप से, redis.createClient () क्रमशः होस्टनाम और पोर्ट के रूप में 127.0.0.1 और 6379 का उपयोग करेगा। यदि आपके पास एक अलग होस्ट / पोर्ट है, तो आप उन्हें निम्नानुसार आपूर्ति कर सकते हैं:

var client = redis.createClient(port, host);

कनेक्शन स्थापित होने के बाद, अब आप कुछ कार्रवाई कर सकते हैं। मूल रूप से, आपको बस नीचे दिखाए गए अनुसार कनेक्ट होने वाली घटनाओं के लिए सुनना होगा।

client.on('connect', function() {
    console.log('connected');
});

तो, निम्नलिखित स्निपेट app.js में चला जाता है:

var redis = require('redis');
var client = redis.createClient();

client.on('connect', function() {
    console.log('connected');
});

अब, टर्मिनल में ऐप चलाने के लिए नोड ऐप टाइप करें। सुनिश्चित करें कि आपका Redis सर्वर ऊपर और इस स्निपेट को चलाने से पहले चल रहा है।

भंडारण कुंजी-मूल्य जोड़े

अब जब आप जानते हैं कि Node.js से Redis से कैसे जुड़ना है, तो देखते हैं कि Redis स्टोरेज में की-वैल्यू पेयर को कैसे स्टोर करें।

स्टोरिंग स्ट्रिंग्स

सभी Redis कमांड क्लाइंट ऑब्जेक्ट पर विभिन्न कार्यों के रूप में सामने आते हैं। एक साधारण स्ट्रिंग को स्टोर करने के लिए निम्नलिखित सिंटैक्स का उपयोग करें:

client.set('framework', 'AngularJS');

या

client.set(['framework', 'AngularJS']);

उपरोक्त स्निपेट्स कुंजी ढांचे के खिलाफ एक साधारण स्ट्रिंग AngularJS को स्टोर करते हैं। आपको ध्यान देना चाहिए कि दोनों स्निपेट्स एक ही काम करते हैं। अंतर केवल इतना है कि पहले एक तर्कों की चर संख्या को पार करता है जबकि बाद में client.set() फ़ंक्शन के लिए एक client.set() सरणी पास करता है। ऑपरेशन पूरा होने पर आपको सूचना प्राप्त करने के लिए एक वैकल्पिक कॉलबैक भी पास किया जा सकता है:

client.set('framework', 'AngularJS', function(err, reply) {
  console.log(reply);
});

आपरेशन किसी कारण से विफल रही है, तो err कॉलबैक करने के लिए तर्क त्रुटि प्रतिनिधित्व करता है। कुंजी का मान प्राप्त करने के लिए निम्नलिखित कार्य करें:

client.get('framework', function(err, reply) {
    console.log(reply);
});

client.get() आपको Redis में संग्रहीत एक कुंजी को पुनः प्राप्त करने देता है। कॉलबैक तर्क उत्तर के माध्यम से कुंजी के मूल्य तक पहुँचा जा सकता है। यदि कुंजी मौजूद नहीं है, तो उत्तर का मान खाली होगा।

स्टोरिंग हैश

कई बार साधारण मान संग्रहीत करने से आपकी समस्या हल नहीं होगी। आपको रेडिस में हैश (ऑब्जेक्ट्स) को स्टोर करने की आवश्यकता होगी। उसके लिए आप hmset() फ़ंक्शन का उपयोग कर सकते हैं:

client.hmset('frameworks', 'javascript', 'AngularJS', 'css', 'Bootstrap', 'node', 'Express');

client.hgetall('frameworks', function(err, object) {
    console.log(object);
});

उपरोक्त स्निपेट रेडिस में एक हैश रखता है जो प्रत्येक प्रौद्योगिकी को उसके ढांचे में मैप करता है। hmset() का पहला तर्क कुंजी का नाम है। बाद के तर्क कुंजी-मूल्य जोड़े का प्रतिनिधित्व करते हैं। इसी प्रकार, कुंजी के मूल्य को पुनः प्राप्त करने के लिए hgetall() का उपयोग किया जाता है। यदि कुंजी मिली है, तो कॉलबैक के दूसरे तर्क में वह मान होगा जो एक वस्तु है।

ध्यान दें कि Redis नेस्टेड ऑब्जेक्ट का समर्थन नहीं करता है। ऑब्जेक्ट में सभी प्रॉपर्टी वैल्यू को स्टोर किए जाने से पहले स्ट्रिंग्स में ज़ब्त किया जाएगा। आप Redis में ऑब्जेक्ट्स को स्टोर करने के लिए निम्न सिंटैक्स का उपयोग कर सकते हैं:

client.hmset('frameworks', {
    'javascript': 'AngularJS',
    'css': 'Bootstrap',
    'node': 'Express'
});

ऑपरेशन पूरा होने पर वैकल्पिक कॉलबैक भी पास किया जा सकता है।

सभी फ़ंक्शन (कमांड) को अपरकेस / लोअरकेस समतुल्य के साथ कहा जा सकता है। उदाहरण के लिए, client.hmset() और client.HMSET() समान हैं। भंडारण सूची

यदि आप वस्तुओं की सूची संग्रहीत करना चाहते हैं, तो आप Redis सूचियों का उपयोग कर सकते हैं। सूची को संग्रहीत करने के लिए निम्नलिखित सिंटैक्स का उपयोग करें:

client.rpush(['frameworks', 'angularjs', 'backbone'], function(err, reply) {
    console.log(reply); //prints 2
});

उपरोक्त स्निपेट एक सूची बनाता है जिसे फ्रेमवर्क कहा जाता है और इसमें दो तत्वों को धकेलता है। इसलिए, सूची की लंबाई अब दो है। आप देख सकते हैं मैं एक बीत चुके हैं args के लिए सरणी rpush । सरणी का पहला आइटम कुंजी के नाम का प्रतिनिधित्व करता है जबकि बाकी सूची के तत्वों का प्रतिनिधित्व करते हैं। तुम भी उपयोग कर सकते हैं lpush() के बजाय rpush() बाईं ओर तत्वों पुश करने के लिए।

सूची के तत्वों को प्राप्त करने के लिए आप निम्नलिखित के रूप में lrange() फ़ंक्शन का उपयोग कर सकते हैं:

client.lrange('frameworks', 0, -1, function(err, reply) {
    console.log(reply); // ['angularjs', 'backbone']
});

बस ध्यान दें कि आप सूची के सभी तत्वों को पास करने के लिए तीसरे तर्क के रूप में पास lrange() । यदि आप सूची का एक सबसेट चाहते हैं, तो आपको यहां अंत इंडेक्स पास करना चाहिए।

भंडारण सेट

सेट सूची के समान हैं, लेकिन अंतर यह है कि वे डुप्लिकेट की अनुमति नहीं देते हैं। इसलिए, यदि आप अपनी सूची में कोई डुप्लिकेट तत्व नहीं चाहते हैं तो आप एक सेट का उपयोग कर सकते हैं। यहां बताया गया है कि हम सूची के बजाय सेट का उपयोग करने के लिए अपने पिछले स्निपेट को कैसे संशोधित कर सकते हैं।

client.sadd(['tags', 'angularjs', 'backbonejs', 'emberjs'], function(err, reply) {
    console.log(reply); // 3
});

जैसा कि आप देख सकते हैं, sadd() फ़ंक्शन निर्दिष्ट तत्वों के साथ एक नया सेट बनाता है। यहां, सेट की लंबाई तीन है। सेट के सदस्यों को पुनः प्राप्त करने के लिए, निम्नलिखित के रूप में smembers() फ़ंक्शन का उपयोग करें:

client.smembers('tags', function(err, reply) {
    console.log(reply);
});

यह स्निपेट सेट के सभी सदस्यों को पुनः प्राप्त करेगा। बस ध्यान दें कि सदस्यों को पुनः प्राप्त करते समय आदेश संरक्षित नहीं है।

यह हर रेडिस संचालित ऐप में पाए जाने वाले सबसे महत्वपूर्ण डेटा संरचनाओं की एक सूची थी। स्ट्रिंग्स, सूचियों, सेटों और हैश के अलावा, आप सॉर्ट किए गए सेट, हाइपरलॉगलॉग और रेडिस में अधिक स्टोर कर सकते हैं। यदि आप कमांड और डेटा संरचनाओं की पूरी सूची चाहते हैं, तो आधिकारिक रेडिस प्रलेखन पर जाएँ। याद रखें कि लगभग हर रेडिस कमांड नोड_्रेडिस मॉड्यूल द्वारा पेश किए गए क्लाइंट ऑब्जेक्ट पर उजागर होता है।

कुछ और महत्वपूर्ण ऑपरेशन नोड_्रेडिस द्वारा समर्थित हैं।

कुंजी की अस्तित्व की जाँच

कभी-कभी आपको यह जांचने की आवश्यकता हो सकती है कि क्या कोई कुंजी पहले से मौजूद है और तदनुसार आगे बढ़ें। ऐसा करने के लिए, आप नीचे दिखाए गए अनुसार exists() फ़ंक्शन का उपयोग कर सकते हैं:

client.exists('key', function(err, reply) {
    if (reply === 1) {
        console.log('exists');
    } else {
        console.log('doesn\'t exist');
    }
});

हटाने और समाप्ति कुंजी

कई बार आपको कुछ चाबियों को साफ करने और उन्हें फिर से बनाने की आवश्यकता होगी। चाबियाँ साफ करने के लिए, आप नीचे दिखाए अनुसार डेल कमांड का उपयोग कर सकते हैं:

client.del('frameworks', function(err, reply) {
    console.log(reply);
});

आप निम्न कुंजी के लिए एक समाप्ति समय भी दे सकते हैं:

client.set('key1', 'val1');
client.expire('key1', 30);

उपरोक्त स्निपेट कुंजी की 1 को 30 सेकंड का समाप्ति समय प्रदान करता है।

वेतन वृद्धि और कमी

रेडिस इंक्रीमेंट और डिक्रीमेंटिंग कीज़ को भी सपोर्ट करता है। नीचे दिखाए अनुसार एक महत्वपूर्ण उपयोग incr() फ़ंक्शन को बढ़ाने के लिए:

client.set('key1', 10, function() {
    client.incr('key1', function(err, reply) {
        console.log(reply); // 11
    });
});

incr() फ़ंक्शन 1. द्वारा एक महत्वपूर्ण मान बढ़ाता है। यदि आपको एक अलग राशि द्वारा वेतन वृद्धि की आवश्यकता है, तो आप incrby() फ़ंक्शन का उपयोग कर सकते हैं। इसी तरह, एक प्रमुख घटती करने के लिए आप जैसे कार्यों के लिए उपयोग कर सकते decr() और decrby()



Modified text is an extract of the original Stack Overflow Documentation
के तहत लाइसेंस प्राप्त है CC BY-SA 3.0
से संबद्ध नहीं है Stack Overflow