Redis-py आपके लिए एक कनेक्शन पूल प्रदान करता है जिससे आप एक कनेक्शन पुनः प्राप्त कर सकते हैं। कनेक्शन पूल कनेक्शन का एक सेट बनाते हैं जिसे आप आवश्यकतानुसार उपयोग कर सकते हैं (और जब किया जाता है - कनेक्शन को पुन:उपयोग के लिए कनेक्शन पूल में वापस कर दिया जाता है)। उन्हें त्यागे बिना फ्लाई पर कनेक्शन बनाने की कोशिश करना (यानी पूल का उपयोग नहीं करना या पूल का सही तरीके से उपयोग नहीं करना) आपको रेडिस के लिए बहुत सारे कनेक्शन छोड़ देगा (जब तक आप कनेक्शन सीमा को हिट नहीं करते)।
आप इनिट विधि में कनेक्शन पूल सेट करना और पूल को वैश्विक बनाना चुन सकते हैं (यदि आप वैश्विक के साथ असहज हैं तो आप अन्य विकल्पों को देख सकते हैं)।
redis_pool = None
def init():
global redis_pool
print("PID %d: initializing redis pool..." % os.getpid())
redis_pool = redis.ConnectionPool(host='10.0.0.1', port=6379, db=0)
फिर आप इस तरह के पूल से कनेक्शन पुनः प्राप्त कर सकते हैं:
redis_conn = redis.Redis(connection_pool=redis_pool)
साथ ही, मुझे लगता है कि आप रेडिस-पीई के साथ किराए पर लेने वाले का उपयोग कर रहे हैं क्योंकि इसे कुछ मामलों में प्रदर्शन में सुधार करना चाहिए। क्या आपने अपने मौजूदा सेटअप के साथ रेडिस सर्वर के लिए खुले कनेक्शनों की संख्या की भी जाँच की है क्योंकि यह काफी अधिक होने की संभावना है? जानकारी प्राप्त करने के लिए आप INFO कमांड का उपयोग कर सकते हैं:
redis-cli info
ग्राहकों की जांच करें अनुभाग जिसमें आप देखेंगे "connected_clients " फ़ील्ड जो आपको बताएगी कि आपने उस पल में रेडिस सर्वर के लिए कितने कनेक्शन खोले हैं।