लुआ स्क्रिप्ट पूरी रेडिस सर्वर को कैसे अवरुद्ध करती है? [डुप्लीकेट]
मान लीजिए कि मेरे पास एक Redis इंस्टेंस चल रहा है और मेरे पास इससे जुड़े दो ग्राहक A और B हैं। मैं उनमें से एक से एक केवल पढ़ने वाली LUA स्क्रिप्ट को निष्पादित करता हूं और दूसरे से जावा में रेडिस टेम्पलेट का उपयोग करके केवल एक रीड हैश ऑपरेशन करता हूं। चूंकि रेडिस के सभी ऑपरेशन अवरुद्ध हैं, इसलिए मैं मानता हूं कि यदि एलयूए स्क्रिप्ट पहले जारी की जाती है, तो दूसरे क्लाइंट को तब तक इंतजार करना होगा जब तक कि एलुआ स्क्रिप्ट ऑपरेशन समाप्त नहीं हो जाता। उसी तरह, यदि हैश ऑपरेशन पहले जारी किया जाता है, तो लूआ स्क्रिप्ट ऑपरेशन को तब तक इंतजार करना पड़ता है जब तक हैश ऑपरेशन समाप्त नहीं हो जाता। क्या यह एक मान्य कथन है? यदि यह एकल पिरोया हुआ है तो Redis कई स्रोतों से कॉल कैसे संभालता है?
जवाब
Redis में आंतरिक आंतरिक लूप होता है जो अधिक विवरण के लिए हर बार मुख्य थ्रेड पर एक ईवेंट चलाता है:
- https://redis.io/topics/internals-rediseventlib
- http://nosqlgeek.blogspot.com/2019/10/so-what-exactly-is-event-loop.html