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

कैशिंग एप्लिकेशन में रेडिस बनाम डिस्क का प्रदर्शन

यह संतरे से सेब की तुलना है। देखें http://redis.io/topics/benchmarks

Redis एक कुशल रिमोट है डेटा भंडार। हर बार रेडिस पर एक कमांड निष्पादित होने पर, रेडिस सर्वर को एक संदेश भेजा जाता है, और यदि क्लाइंट सिंक्रोनस है, तो यह उत्तर की प्रतीक्षा कर रहा है। तो आदेश की लागत से परे, आप नेटवर्क राउंडट्रिप या आईपीसी के लिए भुगतान करेंगे।

आधुनिक हार्डवेयर पर, नेटवर्क राउंडट्रिप या आईपीसी अन्य कार्यों की तुलना में आश्चर्यजनक रूप से महंगे हैं। यह कई कारकों के कारण है:

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

अब, परिणामों की समीक्षा करते हैं।

जनरेटर का उपयोग करने वाले कार्यान्वयन और फ़ंक्शन कॉल का उपयोग करने वाले की तुलना में, वे रेडिस के लिए समान संख्या में राउंडट्रिप उत्पन्न नहीं करते हैं। जनरेटर के साथ आपके पास बस:

    while time.time() - t - expiry < 0:
        yield r.get(fpKey)

तो प्रति पुनरावृत्ति 1 राउंडट्रिप। फ़ंक्शन के साथ, आपके पास है:

if r.exists(fpKey):
    return r.get(fpKey)

तो प्रति पुनरावृत्ति 2 राउंडट्रिप। कोई आश्चर्य नहीं कि जनरेटर तेज है।

बेशक आपको इष्टतम प्रदर्शन के लिए उसी रेडिस कनेक्शन का पुन:उपयोग करना चाहिए। एक बेंचमार्क चलाने का कोई मतलब नहीं है जो व्यवस्थित रूप से कनेक्ट/डिस्कनेक्ट हो।

अंत में, रेडिस कॉल और फ़ाइल रीड के बीच प्रदर्शन अंतर के संबंध में, आप बस स्थानीय कॉल की तुलना रिमोट से कर रहे हैं। फाइल रीड ओएस फाइल सिस्टम द्वारा कैश की जाती है, इसलिए वे कर्नेल और पायथन के बीच तेज मेमोरी ट्रांसफर ऑपरेशन हैं। यहां कोई डिस्क I/O शामिल नहीं है। रेडिस के साथ, आपको राउंडट्रिप की लागत का भुगतान करना होगा, इसलिए यह बहुत धीमा है।




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. रेडिस सिंगल थ्रेड है। फिर मुझे सलाद का उपयोग क्यों करना चाहिए?

  2. रेडिस कैश में सूची तत्व को कैसे स्टोर करें

  3. रेडिस कनेक्ट ECONNREFUSED 127.0.0.1:6379

  4. Redis - लेन-देन में Incr मान का उपयोग करना

  5. एक्सप्रेस Node.JS - रेडिस कॉलबैक प्राप्त करना, वादों को क्रियान्वित करना