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

एक रेडिस डीबी के मूल्यों में खोज रहे हैं

रेडिस उन मामलों के लिए है जहां आपको बहुत उच्च आवृत्ति पर डेटा तक पहुंचने और अपडेट करने की आवश्यकता होती है और जहां आप डेटा संरचनाओं (हैश, सेट, सूचियां, स्ट्रिंग्स, या सॉर्ट किए गए सेट) के उपयोग से लाभान्वित होते हैं। यह बहुत विशिष्ट उपयोग के मामलों को भरने के लिए बनाया गया है। यदि आपके पास बहुत लचीली खोज जैसा सामान्य उपयोग का मामला है, तो आपको इस उद्देश्य के लिए बनाई गई लोचदार खोज या SOLR जैसी किसी चीज़ द्वारा बेहतर सेवा दी जाएगी।

उस ने कहा, अगर आपको इसे रेडिस में करना है, तो यहां बताया गया है कि मैं इसे कैसे करूंगा (यह मानते हुए कि उपयोगकर्ता नाम और फोन नंबर साझा कर सकते हैं):

name:some_name -> set([id1, id2, etc...])
name:some_other_name -> set([id3, id4, etc...])

phone:some_phone -> set([id1, id3, etc...])
phone:some_other_phone -> set([id2, id4, etc...])

id1 -> {'name' : 'bob', 'phone' : '123-456-7891', etc...}
id2 -> {'name' : 'alice', 'phone' : '987-456-7891', etc...}

इस मामले में, हम प्रत्येक नाम ("नाम:" के साथ उपसर्ग) और प्रत्येक फ़ोन नंबर (उपसर्ग "फ़ोन:") के लिए एक नई कुंजी बना रहे हैं। प्रत्येक कुंजी आईडी के एक सेट की ओर इशारा करती है जिसमें वह सभी जानकारी होती है जो आप एक उपयोगकर्ता के लिए चाहते हैं। उदाहरण के लिए, जब आप फ़ोन के लिए खोज करते हैं, तो आप यह करेंगे:

HGETALL 'phone:123-456-7891'

और फिर परिणामों के माध्यम से लूप करें और अपनी पसंद की भाषा में प्रत्येक (हमारे उदाहरण में नाम) पर जो भी जानकारी लौटाएं (आप रेडिस बॉक्स पर सर्वर-साइड लुआ में यह पूरी चीज कर सकते हैं ताकि आप तेजी से जा सकें और नेटवर्क बैक-एंड से बच सकें- आगे, अगर आप चाहें तो):

for id in results:
    HGET id 'name'

आपकी लागत यहां होगी O(m) जहां m दिए गए फ़ोन नंबर वाले उपयोगकर्ताओं की संख्या है, और यह रेडिस पर बहुत तेज़ ऑपरेशन होगा क्योंकि यह गति के लिए कितना अनुकूलित है। यह आपके मामले में अधिक हो जाएगा क्योंकि शायद आपको चीजों को इतनी तेज़ी से जाने की ज़रूरत नहीं है, और आप लचीली खोज करना पसंद करेंगे, लेकिन आप इसे इस तरह करेंगे।



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. साइडकीक काम करने की स्थिति

  2. एमएस एक्सेल से रेडिस एक्सेस?

  3. रेल + डॉकर + साइडकीक + 127.0.0.1:6379 पर रेडिस से कनेक्ट करने में त्रुटि (Errno::ECONNREFUSED)

  4. रेडिस सर्विसस्टैक पूल कनेक्शन क्लाइंट

  5. सेलेरी टास्क को कैसे रोकें या फिर से शुरू करें?