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

रेडिस हैश बनाम कई कुंजियों का उपयोग करने की प्रदर्शन तुलना

hash चुनना string से अधिक उपयोग के मामलों के आधार पर इसके कई लाभ और कुछ कमियां हैं। यदि आप हैश चुनने जा रहे हैं, तो अपने जेसन ऑब्जेक्ट को हैश फ़ील्ड और मानों जैसे;

. के रूप में डिज़ाइन करना बेहतर है
127.0.0.1:6379> hset user:1 ssn 10101010101 name john surname wick date 2020-02-02 location continental
(integer) 5
127.0.0.1:6379> hgetall user:1
 1) "ssn"
 2) "10101010101"
 3) "name"
 4) "john"
 5) "surname"
 6) "wick"
 7) "date"
 8) "2020-02-02"
 9) "location"
10) "continental"

यहाँ hash . के लाभ दिए गए हैं जब आप उचित डेटा मॉडलिंग करते हैं तो ओवर स्ट्रिंग्स।

  • प्रदर्शन पक्ष पर स्ट्रिंग्स और हैश दोनों के लिए अधिकांश कमांड की जटिलता समान है।
  • स्ट्रिंग की तुलना में हैश पर अलग-अलग जेसन फ़ील्ड को एक्सेस/अपडेट/डिलीट करना आसान है। आपको पूरी स्ट्रिंग प्राप्त करने, डीकोड करने, परिवर्तन करने और इसे फिर से सेट करने की आवश्यकता नहीं है। आप पूरी वस्तु प्राप्त किए बिना उन कार्यों के लिए एचडीईएल, एचएसईटी या एचजीईटी का उपयोग कर सकते हैं।
  • यदि आपके स्ट्रिंग ऑब्जेक्ट का आकार बढ़ता है, तो आप पूरे ऑब्जेक्ट को स्थानांतरित (प्राप्त/सेट) करते समय नेटवर्क और बैंडविड्थ से पीड़ित होंगे। जैसा कि दस्तावेज़ीकरण में कहा गया है
<ब्लॉकक्वॉट>

वैश्विक प्रदर्शन के लिए विशेष रूप से छोटी वस्तुओं के लिए रैम और मेमोरी बैंडविड्थ की गति कम महत्वपूर्ण लगती है। हालांकि बड़ी वस्तुओं (>10 KB) के लिए, यह ध्यान देने योग्य हो सकता है।

  • यदि आप अपने डेटा आकार को डिजाइन करने के लिए अच्छा बेंचमार्क बनाते हैं तो हैश स्ट्रिंग की तुलना में अधिक मेमोरी फ्रेंडली होते हैं। जैसा कि प्रलेखन में कहा गया है और इंस्टाग्राम इंजीनियरिंग द्वारा एक उदाहरण उपयोग के मामले में आपको विशेष एन्कोडिंग के साथ एक बड़ा लाभ मिल सकता है।
<ब्लॉकक्वॉट>

हैश, सूचियाँ, केवल पूर्णांकों से बना सेट, और सॉर्ट किए गए सेट, जब तत्वों की दी गई संख्या से छोटे होते हैं, और अधिकतम तत्व आकार तक, बहुत मेमोरी कुशल तरीके से एन्कोड किए जाते हैं जो 10 गुना कम मेमोरी का उपयोग करते हैं (5 के साथ) औसत बचत होने के कारण समय कम मेमोरी का उपयोग किया जाता है)।

दूसरी ओर, आपके उपयोग के मामलों के आधार पर;

  • ziplist मुफ्त में नहीं आता, यह मेमोरी और सीपीयू के बीच एक समझौता है।
  • आप हैश फ़ील्ड को आंशिक रूप से समाप्त नहीं कर सकते। यदि आप कई स्ट्रिंग्स में विभाजित करते हैं तो आप EXPIRE . कर सकते हैं उन्हें लेकिन हैश में केवल शीर्ष स्तर की कुंजी को सभी मानों के साथ समाप्त किया जा सकता है।



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. विंडो नीला में सत्र दृढ़ता में मदद करने के लिए रेडिस कैसे काम करता है

  2. रेडिस से सत्र को कैसे बचाएं और पुनर्प्राप्त करें

  3. Laravel रेडिस ड्राइवर के साथ सभी सत्र आईडी

  4. कंप्यूट इंजन आंतरिक आईपी पर रेडिस से कनेक्ट होने पर Google क्लाउड कार्य समय समाप्त हो जाता है

  5. रेडिस:किसी सरणी या सॉर्ट किए गए सेट में किसी तत्व को समाप्त करना संभव है?