Redis
 sql >> डेटाबेस >  >> NoSQL >> Redis

Redis से कई प्रमुख मान प्राप्त करना

वस्तुओं पर एक लूप करना और प्रत्येक तत्व को समकालिक रूप से एक्सेस करना बहुत कुशल नहीं है। Redis 2.4 के साथ, आप जो चाहते हैं उसे करने के कई तरीके हैं:

  • सॉर्ट कमांड का उपयोग करके
  • पाइपलाइनिंग का उपयोग करके
  • वैरिएडिक पैरामीटर कमांड का उपयोग करके

रेडिस 2.6 के साथ, आप लुआ स्क्रिप्टिंग का भी उपयोग कर सकते हैं, लेकिन यहां वास्तव में इसकी आवश्यकता नहीं है।

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

सॉर्ट कमांड का उपयोग करना

आप एक राउंडट्रिप में डेटा पुनर्प्राप्त करने के लिए रेडिस सॉर्ट कमांड का उपयोग कर सकते हैं।

redis> set users:1:name "daniel"
OK
redis> set users:1:age 24
OK
redis> set users:2:name "user2"
OK
redis> set users:2:age 24
OK
redis> sadd events:1:attendees users:1 users:2
(integer) 2
redis> sort events:1:attendees by nosort get *:name get *:age
1) "user2"
2) "24"
3) "daniel"
4) "24"

पाइपलाइनिंग का उपयोग करना

रूबी क्लाइंट पाइपलाइनिंग का समर्थन करता है (यानी रेडिस को कई प्रश्न भेजने और कई उत्तरों की प्रतीक्षा करने की क्षमता)।

keys = $redis.smembers("events:1:attendees")
res = $redis.pipelined do
   keys.each do |x|
      $redis.mget(x+":name",x+":age")
   end
end

उपरोक्त कोड केवल दो राउंडट्रिप में डेटा पुनर्प्राप्त करेगा।

वैरिएडिक पैरामीटर कमांड का उपयोग करना

MGET कमांड का उपयोग एक ही बार में कई डेटा को पुनः प्राप्त करने के लिए किया जा सकता है:

redis> smembers events:1:attendees
1) "users:2"
2) "users:1"
redis> mget users:1:name users:1:age users:2:name users:2:age
1) "daniel"
2) "24"
3) "user2"
4) "24"

यहां की लागत भी दो राउंडट्रिप है। यह काम करता है यदि आप गारंटी दे सकते हैं कि पुनर्प्राप्त करने के लिए चाबियों की संख्या सीमित है। यदि नहीं, तो पाइपलाइनिंग एक बेहतर समाधान है।



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. स्प्रिंग रेडिस - application.properties फ़ाइल से कॉन्फ़िगरेशन पढ़ें

  2. नोड में रेडिस का उपयोग करके हैश कुंजी के सभी फ़ील्ड और मान प्राप्त करें

  3. docker-compose:कंटेनरों के बीच कनेक्शन अस्वीकार कर दिया गया है, लेकिन सेवा होस्ट से सुलभ है

  4. Redis Lua स्क्रिप्ट को कॉल करते समय KEYS और ARGV सरणियाँ क्यों हैं?

  5. रेडिस एचएलएल बहुत अधिक झूठी सकारात्मक