जब बीएलपीओपी जैसे आदेशों को अवरुद्ध करने या पब/सब चैनल सुनने की बात आती है तो आपको tornado-redis जैसे एसिंक्रोनस क्लाइंट की आवश्यकता होगी। आप this demo से शुरू कर सकते हैं यह देखने के लिए कि tornado-redis क्लाइंट का उपयोग सरल सार्वजनिक चैट एप्लिकेशन को विकसित करने के लिए किया जा सकता है।
लेकिन मैं अन्य मामलों के लिए hiredis के साथ सिंक्रोनस redis-py क्लाइंट का उपयोग करने की अनुशंसा करता हूं।
एसिंक्रोनस क्लाइंट का मुख्य लाभ यह है कि आपका सर्वर रेडिस सर्वर प्रतिक्रिया की प्रतीक्षा करते समय आने वाले अनुरोधों को संभाल सकता है। हालांकि, रेडिस सर्वर इतना तेज़ है कि ज्यादातर मामलों में आपके टोरनाडो एप्लिकेशन में एसिंक्रोनस कॉलबैक स्थापित करने का ओवरहेड अनुरोध प्रक्रिया के कुल समय में और फिर Redis सर्वर प्रतिक्रिया की प्रतीक्षा में बिताए गए समय को जोड़ता है।
एक एसिंक्रोनस क्लाइंट का उपयोग करके आप एक ही समय में रेडिस सर्वर पर एकाधिक अनुरोध भेजने का प्रयास कर सकते हैं, लेकिन रेडिस सर्वर एक सिंगल थ्रेडेड (टॉरनाडो सर्वर की तरह) है, इसलिए यह इन अनुरोधों का उत्तर देगा- एक करके और आप लगभग कुछ भी हासिल नहीं करेंगे। और, वास्तव में, आपको एक ही समय में एक ही Redis सर्वर पर एकाधिक Redis आदेश भेजने की आवश्यकता नहीं है जब तक कि पाइपलाइन और एमजीईटी/एमएसईटी जैसे आदेश हैं।
एक अतुल्यकालिक ग्राहक कुछ लाभ जब आप कई Redis सर्वर उदाहरणों का उपयोग किया है, लेकिन मैं एक तुल्यकालिक (redis-py) ग्राहक और twemproxy या this one (उत्तरार्द्ध का समर्थन करता है पाइपलाइनिंग और mget/MSET आदेश) की तरह एक प्रॉक्सी का उपयोग सुझाव देते हैं।
इसके अलावा मैं सुझाव देता हूं कि टोरनाडो अनुप्रयोगों में रेडिस-पीई क्लाइंट का उपयोग करते समय कनेक्शन पूलिंग का उपयोग न करें। प्रत्येक एप्लिकेशन को कनेक्ट करने वाले प्रत्येक Redis डेटाबेस के लिए बस एक Redis
ऑब्जेक्ट उदाहरण बनाएं।
दरअसल, एक सिंक्रोनस क्लाइंट का उपयोग औसत मामले के लिए ठीक लगता है, लेकिन सबसे खराब मामला स्वीकार्य नहीं हो सकता है!उदाहरण 1: यदि रेडिस लटकती है या रेडिस पर नेटवर्क धीमा है, तो आप अपने टोरनाडो ऐप को लटका देंगे। उदाहरण 2: क्लाइंट पर serializing अनुरोध और सर्वर पर serializing केवल तभी समकक्ष है जब नेटवर्क विलंबता 0 है, जो लगभग कभी मामला नहीं है। –
टॉरनाडो-रेडिस अब और बनाए रखा नहीं है। लेकिन भंडार कुछ विकल्पों का सुझाव देता है: https://github.com/aio-libs/aioredis और https://github.com/mrjoes/toredis – matyas