दक्षता कम नेटवर्क कॉल . है बनाम अधिक डेटा . रेडिस में डेटा बस ब्लॉब हो जाता है, ज्यादातर समय एक एकल एपीआई कॉल 1:1 को रेडिस सर्वर ऑपरेशन के साथ मैप करता है। जिसका अर्थ है कि आप रिमोट सर्वर की मेमोरी से एक जेसन डेटासेट ब्लॉब को डाउनलोड करने और क्लाइंट पर इसे deserializing के रूप में पूर्ण प्रभाव के बारे में सोच सकते हैं - जो प्रभावी रूप से होता है।
कुछ एपीआई जैसे GetAll () में इसे 2 कॉल की आवश्यकता होती है, 1 इकाई सेट में सभी आईडी लाने के लिए, और दूसरा उन आईडी के साथ सभी रिकॉर्ड लाने के लिए। रेडिस क्लाइंट का स्रोत कोड काफी पहुंच योग्य है इसलिए मैं यह देखने की सलाह देता हूं कि वास्तव में क्या हो रहा है।
क्योंकि आपके पास केवल 3 श्रेणियां हैं, यह इतना अतिरिक्त डेटा नहीं है जिसे आप सर्वर पर फ़िल्टर करने का प्रयास करके सहेज रहे हैं।
तो आपके विकल्प मूल रूप से हैं:
- संपूर्ण निकाय डेटासेट डाउनलोड करें और क्लाइंट पर फ़िल्टर करें
- श्रेणी> आईडी से एक कस्टम इंडेक्स मैपिंग बनाए रखें
- अधिक उन्नत:सर्वर साइड फ़िल्टरिंग लागू करने के लिए सर्वर-साइड LUA ऑपरेशन का उपयोग करें (Redis 2.6 की आवश्यकता है)