Node.js ऐप से रेडिस सर्वर के साथ काम करने के लिए सबसे लोकप्रिय पुस्तकालयों में से एक है node-redis
, https://github.com/NodeRedis/node-redis पर उपलब्ध है।
अपने प्रोजेक्ट में पुस्तकालय स्थापित करें:
npm install redis
<ब्लॉकक्वॉट>
युक्ति:पहले npm init -y
run चलाना न भूलें अगर प्रोजेक्ट बिल्कुल नया है और आपके पास package.json
नहीं है फ़ाइल पहले से ही।
Redis इंस्टेंस से कनेक्ट करें
एक बार पुस्तकालय स्थापित हो जाने के बाद, इसे अपने प्रोजेक्ट में उपयोग करने की आवश्यकता है
const redis = require('redis')
या
import redis from 'redis'
एक बार आपके पास redis
ऑब्जेक्ट, का उपयोग करके एक नया क्लाइंट बनाएं
const client = redis.createClient({
url: 'redis://YOUR REDIS INSTANCE URL'
})
और (एक async फ़ंक्शन के अंदर) का उपयोग करके कनेक्ट करें:
await client.connect()
एक बार जब आपके पास क्लाइंट हो जाता है, तो हम वह सब कुछ कर सकते हैं जो हम जानते हैं कि रेडिस कर सकता है।
कनेक्शन बंद करने के लिए, कॉल करें:
client.quit()
कुंजी मान संग्रहीत और पुनर्प्राप्त करें
set()
. का उपयोग करके कुंजी मान युग्म को रेडिस में संग्रहित करें :
client.set("<key>", "<value>")
उदाहरण:
client.set("name", "Flavio")
client.set("age", 37)
अगर आप KEYS *
run चलाते हैं redis-cli
में एक साफ रेडिस सर्वर पर, आपको दो कुंजियाँ दिखाई देंगी:
आप get()
. का उपयोग करके एक कुंजी में संग्रहीत मान प्राप्त कर सकते हैं :
const value = await client.get("name")
. का उपयोग करके एक कुंजी/मान स्ट्रिंग हटाएं
client.del("names")
सूचियों के साथ काम करना
रेडिस में हम
. का उपयोग करके सूचियों के साथ काम कर सकते हैंLPUSH
RPUSH
LTRIM
LRANGE
रेडिस मॉड्यूल में हमने जो कमांड पेश की हैं। वे सीधे client
. के रूप में मैप करते हैं वस्तु विधियाँ।
. का उपयोग करके एक सूची बनाएं
client.lPush('names', 'Flavio')
सूची में सबसे नीचे एक नया आइटम पुश करें:
client.rPush('names', 'Roger')
या सूची में सबसे ऊपर:
client.lPush('names', 'Syd')
सूची में सभी मदों का उपयोग करके सूची बनाएं:
const result = await client.lRange('names', 0, -1)
//result is [ 'Roger', 'Flavio', 'Syd' ]
सूची से आइटम ड्रॉप करें
client.rPop('names')
. का उपयोग करके एक सूची हटाएं
client.del('names')
सेट के साथ काम करना
रेडिस में हम सेट के साथ काम करते हैं
SADD
SPOP
SMEMBERS
।
और अन्य रेडिस कमांड, जो सीधे client
. के रूप में मैप करते हैं वस्तु विधियाँ।
. का उपयोग करके एक सेट बनाएं
client.sAdd('names', 'Flavio')
सेट में और आइटम जोड़ें:
client.sAdd('names', 'Roger')
आप एक साथ कई जोड़ सकते हैं:
client.sAdd('names', 'Roger', 'Syd')
एक सरणी पास करके भी:
const names = ['Flavio', 'Roger', 'Syd']
client.sAdd('names', names)
सेट का उपयोग करके सभी आइटम्स को सूचीबद्ध करें:
const names = await client.sMembers('names')
एक सेट से एक यादृच्छिक आइटम का उपयोग करके ड्रॉप करें:
client.sPop('names')
कई यादृच्छिक आइटम ड्रॉप करने के लिए दूसरा पैरामीटर जोड़ें:
client.sPop('names', 3)
. का उपयोग करके एक सेट हटाएं
client.del('names')
हैश के साथ काम करना
रेडिस में हम कमांड के एक सेट का उपयोग करके हैश के साथ काम करते हैं जिसमें शामिल हैं
HMSET
HGETALL
HSET
HINCRBY
।
और अन्य कमांड जिन्हें हमने रेडिस मॉड्यूल में पेश किया था, जो सीधे client
. के रूप में मैप करते हैं वस्तु विधियाँ।
. का उपयोग करके हैश बनाएं
client.hSet('person:1', 'name', 'Flavio', 'age', 37)
उपयोगकर्ता के सभी गुण प्राप्त करने के लिए, HGETALL का उपयोग करें:
const items = client.hGetAll('person:1')
आप HSET का उपयोग करके हैश प्रॉपर्टी को अपडेट कर सकते हैं:
client.hSet('person:1', 'age', 38)
आप HINCRBY का उपयोग करके हैश में संग्रहीत मान बढ़ा सकते हैं:
client.hIncrBy('person:1', 'age', 1)
. का उपयोग करके हैश हटाएं
client.del('person:1')
सदस्यता
सदस्यता रेडिस की एक अद्भुत विशेषता है, जो हमें Node.js में वास्तव में फैंसी चीजें करने की शक्ति देती है।
एक प्रकाशक एक चैनल पर एक संदेश भेजता है। एकाधिक ग्राहक इसे प्राप्त करते हैं।
. का उपयोग करके चैनल की सदस्यता लें
await subscriber.subscribe('dogs', (message) => {
console.log(message);
})
client.publish('<channel>', '<message>')
का उपयोग करके चैनल पर प्रकाशित करें
client.publish('dogs', 'Roger')
ध्यान रखें कि आप एक ही client
. से प्रकाशित और सदस्यता नहीं ले सकते हैं उदाहरण।
एक ही ऐप में ऐसा करने के लिए, 2 क्लाइंट बनाएं:
const subscriber = redis.createClient({ ... })
const publisher = redis.createClient({ ... })
await subscriber.subscribe('dogs', (message) => {
console.log(channel, message);
})
publisher.publish('dogs', 'Roger')