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

500MB Redis dump.rdb फ़ाइल में लगभग 5.0GB मेमोरी क्यों लगती है?

मेमोरी और डंप आकार का अनुपात रेडिस द्वारा आंतरिक रूप से उपयोग किए जाने वाले डेटा प्रकारों पर निर्भर करता है।

छोटी वस्तुओं (हैश, सूचियाँ और सॉर्ट किए गए सेट) के लिए, रेडिस डेटा को एन्कोड करने के लिए ज़िपलिस्ट का उपयोग करता है। पूर्णांकों से बने छोटे सेटों के लिए, रेडिस इनसेट्स का उपयोग करता है। ZipLists और IntSets को डिस्क पर उसी प्रारूप में संग्रहीत किया जाता है जैसे वे मेमोरी में संग्रहीत होते हैं . इसलिए, यदि आपका डेटा इन एन्कोडिंग का उपयोग करता है, तो आप 1:1 के अनुपात की अपेक्षा करेंगे।

बड़ी वस्तुओं के लिए, इन-मेमोरी प्रतिनिधित्व ऑन-डिस्क प्रतिनिधित्व से पूरी तरह से अलग है। ऑन-डिस्क प्रारूप संकुचित है, इसमें पॉइंटर्स नहीं हैं, मेमोरी फ़्रेग्मेंटेशन से निपटने की ज़रूरत नहीं है। इसलिए, यदि आपके ऑब्जेक्ट बड़े हैं, तो 10:1 मेमोरी से डिस्क अनुपात सामान्य और अपेक्षित है।

यदि आप जानना चाहते हैं कि कौन सी वस्तुएं मेमोरी को खा जाती हैं, तो अपने डेटा को प्रोफाइल करने के लिए रेडिस-आरडीबी-टूल्स का उपयोग करें (अस्वीकरण:मैं इस टूल का लेखक हूं)। वहां से, redis.io पर मेमोरी ऑप्टिमाइज़ेशन नोट्स के साथ-साथ redis-rdb-tools पर मेमोरी ऑप्टिमाइज़ेशन विकी प्रविष्टि का पालन करें।



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. संदेश दलाल के रूप में रेडिस

  2. विभिन्न मशीनों पर रेडिस प्रतिकृति का उपयोग करना (मल्टी मास्टर)

  3. रेडिस हैश में एक प्रमुख पैटर्न कैसे खोजें?

  4. redis + gevent - खराब प्रदर्शन - मैं क्या गलत कर रहा हूँ?

  5. पायथन-रेडिस कीज़ () स्ट्रिंग्स के बजाय बाइट्स ऑब्जेक्ट्स की सूची देता है