यदि आप गति चाहते हैं, तो आपको संरचना या 'कैश' को रेडिस में संग्रहीत करते समय यथासंभव तैयार करना चाहिए। यदि आप उत्पादों को HSET
में संग्रहीत करते हैं , और इस HSET
में अपने 'उत्पाद डेटा' सदस्य के साथ श्रेणी काउंटर (प्रति श्रेणी एक) जोड़ें , आप HINCRBY
. का उपयोग कर सकते हैं काउंटरों को बढ़ाने/घटाने के लिए।
सामान्य तौर पर (आपकी आवश्यकताओं के लिए एक रेडिस कैश डिज़ाइन करना):आपको किसी भी ऐसे डेटा को पुनर्प्राप्त करने से रोकने का प्रयास करना चाहिए जिसकी आपको आवश्यकता नहीं है।
मैं आपकी समेकित रिपोर्ट को संग्रहीत करने (/अद्यतन/हटाने) के साथ-साथ पुनर्प्राप्त करने के लिए लुआ स्क्रिप्ट का उपयोग करने की अनुशंसा करता हूं। लुआ स्क्रिप्ट को रेडिस सर्वर पर निष्पादित किया जाता है। सर्विसस्टैक उनका समर्थन करता है (SCRIPT LOAD
+ EVALSHA
या बस EVAL
), और आप BookSleeve C# क्लाइंट मॉड्यूल भी आज़मा सकते हैं (जिसका हम उपयोग करते हैं, और यह थोड़ा तेज़ है। 'तेज़' :अच्छा रेडिस-डेटा डिज़ाइन सबसे पहले आता है। BookSleeve C# क्लाइंट मल्टीथ्रेडेड रेडिस पाइपलाइनिंग पर ध्यान केंद्रित करता है, जो कि बड़े डेटासेट के साथ काम करते समय शायद आप चाहते हैं। सर्विसस्टैक के साथ भी पाइपलाइनिंग संभव होनी चाहिए।
यदि श्रेणियों और उत्पादों में एक पूर्णांक आईडी है, तो आप इसे ZSET
. के साथ भी जोड़ सकते हैं , जहां आप आईडी को स्कोर फ़ील्ड के रूप में उपयोग कर सकते हैं। ZRANGEBYSCORE
. के साथ आप सीधे 'रिकॉर्ड' प्राप्त कर सकते हैं। यह तकनीक तब तक सुरक्षित है जब तक कि आपकी आईडी 15 अंकों या उससे कम का उपयोग कर रही हो, और 'स्कोर' के दशमलव भाग का उपयोग न करें। इसलिए आईडी को -999999999999999 से 999999999999999 की सीमा में रहना होगा। नोट:ये सीमाएं मौजूद हैं क्योंकि रेडिस सर्वर वास्तव में स्कोर (फ्लोट) को रेडिस-स्ट्रिंग प्रतिनिधित्व के रूप में आंतरिक रूप से संग्रहीत करता है।
आशा है कि यह मदद करता है, TW