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

रेडिस के साथ मल्टी-पैरामीटर मैच-फाइंडर

आप यहां जो करने की कोशिश कर रहे हैं वह एक उलटा सूचकांक है।

प्रत्येक कॉलम के लिए, इसे "सेट" पर मैप करें। फिर, आप परिणाम प्राप्त करने के लिए सेट को प्रतिच्छेद कर सकते हैं।

तो, APPLE: RED ROUND FRUIT निम्नलिखित प्रविष्टियों को मैप करेगा:

SADD p1:RED APPLE
SADD p2:ROUND APPLE
SADD p3:FRUIT APPLE

फिर, मान लें कि मैं * ROUND FRUIT के लिए क्वेरी करना चाहता हूं , मैं करूँगा:

SINTER p2:ROUND p3:FRUIT

यह कमांड p2:ROUND . में आइटम्स का इंटरसेक्शन ले रहा है सेट और p3:FRUIT सेट। इससे वे सभी आइटम वापस आ जाएंगे जो ROUND . हैं और FRUIT , परवाह नहीं क्या p1 है।

कुछ अन्य उदाहरण:

SMEMBERS p1:GREEN
SINTER p1:RED p2:ROUND p3:FRUIT
SUNION p1:RED p1:GREEN

मेरा उपरोक्त उत्तर कुछ गणना शक्ति का उपयोग करने जा रहा है क्योंकि चौराहे का संचालन O(N*M) . है . यहां ऐसा करने का एक तरीका है जो अधिक मेमोरी गहन है, लेकिन तेजी से पुनर्प्राप्ति होगी क्योंकि यह प्रभावी रूप से इंडेक्स को प्रीकंप्यूट करता है।

गुणों के प्रत्येक संयोजन के लिए, एक कुंजी बनाएं जो एक सेट को संगृहीत करे:

तो, APPLE: RED ROUND FRUIT निम्नलिखित प्रविष्टियों को मैप करेगा:

SADD RED:ROUND:FRUIT APPLE
SADD :ROUND:FRUIT APPLE
SADD RED::FRUIT APPLE
SADD RED:ROUND: APPLE
SADD RED:: APPLE
SADD :ROUND: APPLE
SADD ::FRUIT APPLE
SADD ::: APPLE

फिर, क्वेरी करने के लिए, आप बस संबंधित कुंजी का उपयोग करते हैं। उदाहरण के लिए, * ROUND FRUIT बस होगा

SMEMBERS :ROUND:FRUIT

जाहिर है, जब आपके पास कई आयाम होते हैं तो यह स्मृति के मामले में बिल्कुल भी अच्छा नहीं होता है, लेकिन परिणाम प्राप्त करना बेहद तेज़ होगा।




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. phpredis MAC OSX स्थापित करें

  2. Redis SET का प्रदर्शन GET से बेहतर क्यों है?

  3. रेडिस पब्लिश-सब्सक्राइब:क्या रेडिस को भारी तनाव में भी संदेश देने की गारंटी है?

  4. मैं कैसे जांच सकता हूं कि मेरा रेडिस कैश काम कर रहा है या नहीं?

  5. जेस्ट और रेडिस (डेटाबेस कैश के साथ इकाई परीक्षण समस्या)