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

एक बार में सैकड़ों काउंटर बढ़ाना, रेडिस या मोंगोडब?

आपकी मुख्य संरचना कैसे निर्धारित की जाती है, इस पर निर्भर करते हुए मैं जिंकर कमांड को पाइपलाइन करने की अनुशंसा करता हूं। आपके पास एक आसान "प्रतिबद्ध" ट्रिगर है - request. यदि आप अपने मापदंडों पर पुनरावृति करते हैं और प्रत्येक कुंजी को जस्ता करते हैं, तो अनुरोध के अंत में निष्पादन आदेश पास करें यह बहुत तेज़ होगा। मैंने एक प्रणाली लागू की है जैसे आप एक cgi और एक Django ऐप दोनों के रूप में वर्णित करते हैं। मैंने इसकी तर्ज पर एक प्रमुख संरचना स्थापित की:

YYYY-MM-DD:HH:MM -> क्रमबद्ध सेट

और एक प्रक्रिया के साथ रेडिस पक्ष पर प्रति सेकंड 150000-200000 वेतन वृद्धि की तरह कुछ संसाधित करने में सक्षम था जो आपके वर्णित परिदृश्य के लिए पर्याप्त होना चाहिए। यह मुख्य संरचना मुझे समय की खिड़कियों के आधार पर डेटा हथियाने की अनुमति देती है। मैंने डीबी क्लीनअप प्रक्रिया लिखने से बचने के लिए चाबियों की समाप्ति भी जोड़ दी है। मेरे पास तब एक क्रोनजॉब था जो उपरोक्त कुंजी पैटर्न के वेरिएंट का उपयोग करके प्रति घंटा, दैनिक और साप्ताहिक में "रोल-अप" आँकड़ों के लिए संचालन सेट करेगा। मैं इन विचारों को सामने लाता हूं क्योंकि वे ऐसे तरीके हैं जिनसे आप रिपोर्टिंग पक्ष को सरल बनाने के लिए रेडिस की अंतर्निहित क्षमताओं का लाभ उठा सकते हैं। इसे करने के और भी तरीके हैं लेकिन यह पैटर्न अच्छा काम करता प्रतीत होता है।

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

आपकी उपलब्ध मेमोरी, डेटा सेट आकार के आधार पर, और क्या आप रेडिस इंस्टेंस में किसी अन्य प्रकार के डेटा को स्टोर करते हैं, आप मेमोरी उपयोग को कम रखने के लिए 32 बिट रेडिस सर्वर चलाने पर विचार कर सकते हैं। एक 32b इंस्टेंस इस प्रकार के बहुत सारे डेटा को मेमोरी के एक छोटे से हिस्से में रखने में सक्षम होना चाहिए, लेकिन यदि सामान्य 64 बिट रेडिस चलाना बहुत अधिक मेमोरी नहीं ले रहा है तो इसका उपयोग करने के लिए स्वतंत्र महसूस करें। हमेशा की तरह मान्य करने के लिए अपने स्वयं के उपयोग पैटर्न का परीक्षण करें



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. रेडिस और मेमकेचे या सिर्फ रेडिस?

  2. मेमकैच बनाम जावा मेमोरी

  3. डॉकर [इरनो 111] कनेक्ट कॉल विफल ('127.0.0.1', 6379)

  4. निष्पादन का रेडिस पाइपलाइन आदेश

  5. अल्पाइन ओएस पर Php7 रेडिस क्लाइंट