हां, रेडिस इसके लिए अच्छा है। लेकिन सार प्राप्त करने के लिए, कैशिंग के लिए मूल रूप से दो दृष्टिकोण हैं। इस पर निर्भर करते हुए कि आप एक ढांचे का उपयोग करते हैं (और कौन सा) या नहीं, आपके पास मानक में या प्लग-इन के उपयोग के साथ पहला विकल्प उपलब्ध हो सकता है:
- कैश डेटाबेस क्वेरी, यानी - चयनित क्वेरी और उनके परिणाम एक निश्चित समय के लिए या कैश को साफ़ करने तक (डेटाबेस अपडेट करने के बाद उपयोगी) त्वरित पहुंच के लिए रेडिस में रखे जाएंगे। इस मामले में आप अंतर्निहित MySQL क्वेरी कैशिंग का उपयोग कर सकते हैं, यह अतिरिक्त कुंजी-मूल्य स्टोर का उपयोग करने से आसान होगा, या आप कैश का उपयोग करने वाले अपने वर्ग के साथ डिफ़ॉल्ट डेटाबेस एकीकरण को ओवरराइड कर सकते हैं (उदाहरण के लिए http://pythonhosted.org /जॉनी-कैश/)।
- कस्टम कैशिंग, जो कैश में रखने के लिए आपकी खुद की संरचनाएं बना रहा है और डेटाबेस से प्राप्त डेटा के साथ समय-समय पर या मैन्युअल रूप से उन्हें फिर से भरना है। यह अधिक लचीला और संभावित रूप से अधिक शक्तिशाली है, क्योंकि आप सूचियों या सॉर्ट किए गए सेट जैसी अंतर्निहित रेडिस सुविधाओं का उपयोग कर सकते हैं, जो अपडेट ओवरहेड को बहुत छोटा बनाते हैं। इसके लिए थोड़ी अधिक कोडिंग की आवश्यकता होती है, लेकिन यह आमतौर पर बेहतर परिणाम प्रदान करता है, क्योंकि यह अधिक अनुकूलित है। अच्छा उदाहरण शीर्ष लेखों को आईडी की रेडिस सूची के रूप में रखना है, और फिर दिए गए आईडी के साथ-साथ रेडिस से क्रमबद्ध लेख तक पहुंचना है। आप उस लेख को असामान्य रख सकते हैं - अर्थात। क्रमबद्ध वस्तु में उपयोगकर्ता आईडी के साथ-साथ उपयोगकर्ता नाम भी हो सकता है, ताकि आप अतिरिक्त प्रश्नों के ऊपरी हिस्से को न्यूनतम रख सकें।
यह आपको तय करना है कि कौन सा दृष्टिकोण लेना है, मैं व्यक्तिगत रूप से लगभग हमेशा दृष्टिकोण संख्या दो के साथ जाता हूं। लेकिन, निश्चित रूप से, सब कुछ इस बात पर निर्भर करता है कि आपके पास कितना समय है, और एप्लिकेशन को क्या करना है - आप MySQL क्वेरी कैशिंग के साथ भी शुरू कर सकते हैं और यदि परिणाम रेडिस और कस्टम कैशिंग के लिए पर्याप्त नहीं हैं।