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

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

आपको एक मान मिल रहा है क्योंकि आप पिछले मान को ओवरराइड करते हैं।

client.hmset("Table1", "Id", "9324324", "ReqNo", "23432", redis.print);

यह तालिका 1 हैश ऑब्जेक्ट में Id, ReqNo जोड़ता है।

client.hmset("Table1", "Id", "9324325", "ReqNo", "23432", redis.print);

यह तालिका 1 हैश ऑब्जेक्ट के लिए Id और ReqNo को ओवरराइड करता है। इस समय, आपके पास हैश में केवल दो फ़ील्ड हैं।

असल में, आपकी समस्या इस तथ्य से आती है कि आप एक रिलेशनल डेटाबेस मॉडल को रेडिस में मैप करने का प्रयास कर रहे हैं। आपको नहीं चाहिए। रेडिस के साथ, डेटा संरचनाओं और पहुंच पथों के संदर्भ में सोचना बेहतर है।

आपको प्रति रिकॉर्ड एक हैश ऑब्जेक्ट स्टोर करने की आवश्यकता है। उदाहरण के लिए:

HMSET Id:9324324 ReqNo 23432 ... and some other properties ...
HMSET Id:9324325 ReqNo 23432 ... and some other properties ...

फिर, आप आईडी को स्टोर करने के लिए एक सेट का उपयोग कर सकते हैं:

SADD Table1 9324324 9324325

अंत में तालिका 1 संग्रह से जुड़े ReqNo डेटा को पुनः प्राप्त करने के लिए:

SORT Table1 BY NOSORT GET # GET Id:*->ReqNo

यदि आप उन सभी आईडी की खोज करना चाहते हैं जो किसी दिए गए ReqNo से जुड़े हैं, तो आपको इस एक्सेस पथ का समर्थन करने के लिए एक और संरचना की आवश्यकता है:

SADD ReqNo:23432 9324324 9324325

तो आप निम्न का उपयोग करके रिकॉर्ड 23432 के लिए आईडी की सूची प्राप्त कर सकते हैं:

SMEMBERS ReqNo:23432

दूसरे शब्दों में, एक संबंधपरक मॉडल को स्थानांतरित करने का प्रयास न करें:बस अपने उपयोग के मामलों का समर्थन करने वाली अपनी खुद की डेटा संरचनाएं बनाएं।




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. OAuthd उदाहरण चल रहे मुद्दे

  2. डेटाबेस को अपडेट करने के बाद रेडिस को कैसे अपडेट करें?

  3. एक यूआरएल के तहत मैराथन (मेसोस) में रेडिस चलाएं

  4. क्या प्रत्येक कॉल phpredis में एक बहु () कॉल के परिणामस्वरूप रेडिस के लिए एक नया नेटवर्क राउंडट्रिप होता है?

  5. Redis में सॉर्ट किए गए सेट की श्रेणी से एक नया सेट बनाना