2011-02-08 15 views
16

तो मैंने पहले से ही this post पढ़ा है क्योंकि रेडिस हैश के लिए MGET एनालॉग नहीं है। उत्तर में से एक ने थोक में ऑपरेशन करने के लिए MULTI/EXEC का उपयोग करने के लिए कहा, और यह सूचियों और नियमित कुंजी के लिए काम करता है, लेकिन दुर्भाग्यवश हैश के लिए नहीं। अभी, हालांकि, मैं हर एक हैश के लिए तार पर एक कॉल कर रहा हूं जिसे मैं पुनर्प्राप्त करना चाहता हूं जो मुझे बुरी खबर की तरह लगता है।रेडिस में कई हैंश पाने के लिए सबसे प्रभावी तरीका?

तो मेरा सवाल है: रेडिस से कई हैंश वापस पाने के लिए कुशल तरीका क्या है, दक्षता मानक कम से कम नेटवर्क कॉल होने के मानक के साथ? मैं पाइथन क्लाइंट के साथ प्रोग्रामिंग, रेडिस 2.0.4 का उपयोग कर रहा हूं। धन्यवाद!

उत्तर

31

सबसे प्रभावी तरीका एक पाइपलाइन का उपयोग करेगा।

आप किसी कुंजी के लिए सब कुछ चाहते हैं मान लिया जाये और पहले से ही सभी कुंजियों पता:

import redis 

r = redis.Redis(host='localhost', port=6379, db=0) 
p = r.pipeline() 
for key in keys: 
    p.hgetall(key) 

for h in p.execute(): 
    print h 

पाइपलाइनों के बारे में अधिक जानकारी यहां पाया जा सकता है: http://redis.io/topics/pipelining

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