आपको एक मान मिल रहा है क्योंकि आप पिछले मान को ओवरराइड करते हैं।
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
दूसरे शब्दों में, एक संबंधपरक मॉडल को स्थानांतरित करने का प्रयास न करें:बस अपने उपयोग के मामलों का समर्थन करने वाली अपनी खुद की डेटा संरचनाएं बनाएं।