TL;DR :सिंगल थ्रेड रेडिस को सरल बनाता है, और रेडिस अभी भी IO बाध्य है।
मेमोरी I/O है। रेडिस अभी भी I/O बाध्य है। जब रेडिस भारी भार में होता है और प्रति सेकंड अधिकतम अनुरोधों तक पहुंचता है तो यह आमतौर पर नेटवर्क बैंडविड्थ या मेमोरी बैंडविड्थ के लिए भूखा होता है, और आमतौर पर सीपीयू का अधिक उपयोग नहीं करता है। ऐसे कुछ आदेश हैं जिनके लिए यह सत्य नहीं होगा, लेकिन अधिकांश उपयोग के मामलों के लिए रेडिस गंभीर रूप से I/O नेटवर्क या मेमोरी द्वारा बाध्य होगा।
जब तक मेमोरी और नेटवर्क की गति अचानक तीव्रता के आदेश प्राप्त नहीं कर लेती, तब तक सिंगल थ्रेडेड होना आमतौर पर कोई समस्या नहीं है। यदि आपको एक या कुछ थ्रेड्स (यानी:मास्टर <-> स्लेव <-> स्लेव सेटअप) से आगे बढ़ने की आवश्यकता है, तो आप पहले से ही रेडिस क्लस्टर देख रहे हैं। उस स्थिति में आप प्रति CPU कोर क्लस्टर इंस्टेंस सेट कर सकते हैं यदि आप किसी तरह CPU भूखे हैं और थ्रेड्स की संख्या को अधिकतम करना चाहते हैं।
मैं रेडिस स्रोत या आंतरिक से बहुत परिचित नहीं हूं, लेकिन मैं देख सकता हूं कि एक धागे का उपयोग करने से लॉकलेस परमाणु क्रियाओं को लागू करना आसान हो जाता है। थ्रेड इसे और अधिक जटिल बना देंगे और बड़े लाभ की पेशकश नहीं करते हैं क्योंकि रेडिस सीपीयू बाध्य नहीं है। रेडिस इंस्टेंस के ऊपर के स्तर पर समेकन को लागू करना एक अच्छा समाधान लगता है, और यही रेडिस सेंटिनल और रेडिस क्लस्टर मदद करता है।
<ब्लॉकक्वॉट>जब रेडिस में लंबा समय लगता है तो अन्य अनुरोधों का क्या होता है?
रेडिस लंबे अनुरोध को पूरा करते समय वे अन्य अनुरोध अवरुद्ध हो जाएंगे। यदि आवश्यक हो, तो आप client-pause
. का उपयोग करके इसका परीक्षण कर सकते हैं आदेश।