2013-03-13 10 views
7

रेडिस कनेक्शन को संभालने के लिए सबसे अच्छा पैटर्न क्या है (दोनों पाइथन-आरक्यू के माध्यम से सीधे और परोक्ष रूप से रेडिस के साथ बातचीत करने के लिए)?पायथन/पायथन आरक्यू के साथ रेडिस कनेक्शन को सही तरीके से कैसे संभालें?

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

इसके अलावा, मैंने आरक्यू में नौकरियों को लागू करते समय कुछ प्रदर्शन डुबकी देखी हैं, जो मुझे बताया गया है कि खराब कनेक्शन उपयोग/पुन: उपयोग से संबंधित हो सकता है।

असल में, मुझे सही पैटर्न जानने में दिलचस्पी है, इसलिए मैं या तो हमारे आवेदन में हमारे पास क्या सत्यापित या सही कर सकता हूं।

बहुत बहुत धन्यवाद! यदि अधिक जानकारी है जो सहायक होगी, तो मुझे बताएं।

उत्तर

4

दृश्यों के पीछे, रेडिस-पीई रेडिस सर्वर से कनेक्शन प्रबंधित करने के लिए कनेक्शन पूल का उपयोग करता है। डिफ़ॉल्ट रूप से, आपके द्वारा बनाए गए प्रत्येक Redis उदाहरण बदले में अपना कनेक्शन पूल बना देगा। आप इस व्यवहार को ओवरराइड कर सकते हैं और रेडिस क्लास के कनेक्शन_पूल तर्क में पहले से बनाए गए कनेक्शन पूल इंस्टेंस को पास करके मौजूदा कनेक्शन पूल का उपयोग कर सकते हैं। आप क्लाइंट साइड शेर्डिंग को कार्यान्वित करने के लिए ऐसा कर सकते हैं या कनेक्शन कैसे प्रबंधित किए जा सकते हैं, इसके बारे में बेहतर अनाज नियंत्रण है

pool = redis.ConnectionPool(host='localhost', port=6379, db=0) 
r = redis.Redis(connection_pool=pool) 
+0

बढ़िया! हालांकि, यह अभी भी मेरे लिए बहुत स्पष्ट नहीं है कि उस कनेक्शन पूल द्वारा लौटाए गए कनेक्शन किसी भी बिंदु पर बंद किए जाने चाहिए या यदि इसे स्वचालित रूप से संभाला जाता है। कोई उपाय? –

+0

कनेक्शन के किसी भी बंद नहीं कर रहा है और न ही मैंने इसके बारे में पढ़ा है और अभी तक कोई प्रदर्शन समस्या नहीं देख रहा हूं। शायद कनेक्शन को संभालने का एक उचित तरीका है – mmenafra

संबंधित मुद्दे