Redis v2.8.3 मल्टी-मास्टर सेटअप का समर्थन नहीं करता है। हालाँकि, असली सवाल यह है कि आप एक सेट अप क्यों करना चाहते हैं? दूसरे शब्दों में कहें तो, आप किस चुनौती/समस्या को हल करने की कोशिश कर रहे हैं?
ऐसा लगता है कि आप जिस चुनौती को हल करने का प्रयास कर रहे हैं, वह यह है कि ओवर-द-नेट रीड्स को हटाकर नेटवर्क लोड (उस पर और अधिक) को कैसे कम किया जाए। चूंकि रेडिस मल्टी-मास्टर नहीं है (अभी तक), ऐसा करने का एकमात्र तरीका प्रत्येक ऐप सर्वर को एक मास्टर के साथ सेट करना है और एक गुलाम (दूसरे मास्टर के लिए) - यानी कुल 4 रेडिस इंस्टेंस (और दो बार रैम)।
सरल परिदृश्य तब होता है जब प्रत्येक ऐप डेटाबेस की चाबियों का केवल एक परस्पर-अनन्य सबसेट अपडेट करता है। उस परिदृश्य में इस तरह का सेटअप वास्तव में फायदेमंद हो सकता है (कम से कम अल्पावधि में)। यदि, हालांकि, दोनों ऐप्स सभी कुंजियों को छू सकते हैं या यदि ऐप्स के बीच लिखने के लिए केवल एक कुंजी "साझा" है, तो आपको स्थानीय मास्टर को समेकित करने के लिए अपने ऐप्स में लॉकिंग/संघर्ष समाधान/आदि ... तर्क सेंकना होगा और दास मतभेद (और यह थोड़ा अधिक हो सकता है)। हालांकि, किसी भी मामले में, आप बहुत अधिक (यानी 1 से अधिक) के साथ समाप्त हो जाएंगे, जिसका अर्थ है कि कम से कम अधिक व्यवस्थापक प्रयास।
यह भी ध्यान दें कि एक ही सर्वर पर ऐप और डेटाबेस को कॉलोकेट करके आप अपने आप को लगभग निश्चित स्केलेबिलिटी विफलता के लिए सेट कर रहे हैं। क्या होगा जब आपको अपने ऐप्स या Redis के लिए अधिक कंप्यूट संसाधनों की आवश्यकता होगी? आप मिश्रण में एक और ऐप सर्वर कैसे जोड़ेंगे?
जो मुझे उस वास्तविक समस्या पर वापस लाता है जिसे आप हल करने का प्रयास कर रहे हैं - नेटवर्क लोड। यह वास्तव में एक मुद्दा क्यों है? क्या आपके ऐप्स इतने थ्रूपुट-भारी हैं या नेटवर्क इतना पतला है कि आप इतनी लंबाई तक जाने को तैयार हैं? या शायद विलंबता वह समस्या है जिसे आप हल करना चाहते हैं? जैसा भी मामला हो, मैंने अनुशंसा की है कि आप इसके बजाय एक समय-सिद्ध डिज़ाइन पर विचार करें, अर्थात् रेडिस को ऐप्स से अलग करना और इसे अपने संसाधनों पर रखना। सच है, नेटवर्क आपको चेहरे पर मार देगा और आपको इसके आसपास/उसके साथ काम करना होगा (जो कि हर कोई करता है)। दूसरी ओर, आपके पास अपने अधिक सरल सेटअप पर अधिक लचीलापन और नियंत्रण होगा और यह मेरी पुस्तक में एक बहुत बड़ा लाभ है।