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

रेडिस dbsize कमांड की शुद्धता

मैं कहूंगा कि यह मुख्य समाप्ति से जुड़ा हुआ है।

Redis या memcached जैसे कुंजी/मूल्य स्टोर समाप्त होने के लिए प्रति ऑब्जेक्ट भौतिक टाइमर को परिभाषित करने का जोखिम नहीं उठा सकते हैं। उनमें से बहुत सारे होंगे। इसके बजाय वे समाप्त होने वाली वस्तुओं को आसानी से ट्रैक करने के लिए डेटा संरचना को परिभाषित करते हैं, और सभी समाप्ति घटनाओं को एक भौतिक टाइमर में मल्टीप्लेक्स करते हैं। वे इन घटनाओं से निपटने के लिए एक आलसी रणनीति भी लागू करते हैं।

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

परिणाम यह है कि जब आपके पास समाप्ति की घटनाओं का एक स्थिर प्रवाह होता है, तो रेडिस के पास एक निश्चित समय पर समाप्त होने के लिए वस्तुओं का एक बैकलॉग हो सकता है।

अब प्रश्न पर वापस आते हैं, DBSIZE कमांड मुख्य शब्दकोश का आकार लौटाता है, इसलिए इसमें समाप्त हो चुके आइटम शामिल हैं जिन्हें अभी तक हटाया नहीं गया है। KEYS कमांड अलग-अलग कुंजियों तक पहुँचने के लिए पूरे शब्दकोश के माध्यम से चलता है, इसलिए यह सभी समाप्त हो चुकी वस्तुओं को बाहर कर देता है। इसलिए मदों की संख्या मेल नहीं खा सकती है।




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. स्प्रिंग बूट ऐप रेडिस और स्प्रिंग बूट सेशन ग्लोबल रेडिस को कैसे अलग करें

  2. रेडिस इंस्टाल सीसी के साथ समस्या:कमांड नहीं मिली

  3. मल्टीपल रेडिस डेटाबेस का क्या मतलब है?

  4. रेस्क्यू वर्कर्स द्वारा कतारबद्ध नौकरियों को कैसे नष्ट किया जाए?

  5. अप्रत्याशित रेडिस-सर्वर विफलता का निदान