2015-04-13 8 views
6

हमने अपने वेब एप्लिकेशन में रेडिस सत्र राज्य प्रदाता को लागू किया था और यह एक आकर्षण की तरह काम करता है लेकिन मुझे आश्चर्य है कि क्या होता है यदि रेडिस सर्वर विफल रहता है या वेब सर्वर रेडिस सर्वर से कनेक्ट नहीं हो सका।एएसपी.Net सत्र राज्य प्रदाता विफलता परिदृश्य

क्या रेडिस के विफलता के रूप में इनप्रोक सत्र राज्य प्रबंधन का उपयोग करने का कोई तरीका है? मुझे कई सत्र राज्य प्रदाताओं को घोषित करने के बारे में कोई दस्तावेज नहीं मिल रहा है, इसलिए अगर रेडिस विफल हो जाता है, तो सिस्टम इनप्रोक का उपयोग करके काम करना जारी रख सकता है। (मैं रेडिस में सत्र राज्यों को खोने के लिए स्वीकार करता हूं और असफल होने के मामले में खरोंच से शुरू होता हूं और फिर से सत्रों को निष्क्रिय करता हूं और फिर लालसा उपलब्ध होने पर फिर से खरोंच से शुरू होता है)

उत्तर

0

आपको अपने रेडिस-सर्वर के लिए दास को परिभाषित करने और रेडिस का उपयोग करने की आवश्यकता है आपके सर्वर की निगरानी करने के लिए सेंटीनेल

+0

तो वहाँ ASP.Net inproc –

+0

चेक इस टिकट http://stackoverflow.com/questions/15437334/how-to-tell-a-client-where-the तरह Redis के लिए वैकल्पिक कॉन्फ़िगर करने के लिए कोई रास्ता नहीं है -न्यू-रेडिस-मास्टर-इज़-यूजिंग-सेंटीनेल –

+2

@alirezam मुझे विश्वास नहीं है कि एएसपी.नेट रेडिस सत्र राज्य प्रदाता रेडिस सेंटीनेल का समर्थन करता है। यदि आप अन्यथा जानते हैं, तो मैं गलत होने के लिए बहुत खुश हूं। – Hovis

-1

मैं रेडिस सर्वर से कनेक्ट करने के लिए स्टैक एक्सचेंज लाइब्रेरी का उपयोग कर रहा हूं। यह सिर्फ एक साधारण कोड है जो दिखाता है कि ईवेंट की सदस्यता कैसे लें और इसे अंतिम समाधान न लें। जब भी सेंटीनेल आपको नया सर्वर चुनता है इसके लिए एक घटना प्राप्त होगी ताकि आप नए सर्वर का चयन कर सकें।

ConnectionMultiplexer multiplexer = 
    ConnectionMultiplexer.Connect(new ConfigurationOptions 
    { 
     CommandMap = CommandMap.Sentinel, 
     EndPoints = { { "127.0.0.1", 26379 }, { "127.0.0.1", 26380 } }, 
     AllowAdmin = true, 
     TieBreaker = "", 
     ServiceName = "mymaster", 
     SyncTimeout = 5000 
    }); 
    multiplexer.GetSubscriber().Subscribe("*", (c, m) => 
     { 

      Debug.WriteLine("the message=" + m); 
      Debug.WriteLine("channel=" + c); 

      try 
      { 
       var sentinelServer = multiplexer.GetServer("127.0.0.1", 26379).SentinelGetMasterAddressByName("mymaster"); 
       Debug.WriteLine("Current server=" + sentinelServer); 
       Debug.Flush(); 
      } 
      catch (Exception) 
      { 
       var sentinelServer = multiplexer.GetServer("127.0.0.1", 26380).SentinelGetMasterAddressByName("mymaster"); 
       Debug.WriteLine("Current server=" + sentinelServer); 
       Debug.Flush(); 
      } 
     }); 
+0

यह उत्तर क्यों दिया गया है? – Tom

+0

क्या आप "+ स्विच-मास्टर" ईवेंट की सदस्यता नहीं ले पाएंगे? साथ ही, आपका कोड बिल्कुल नहीं कहता है कि एप्लिकेशन में स्विच कैसे किया जाता है। क्या आप घटना हैंडलर को विस्तारित कर सकते हैं? – Tom

+0

आपको स्टैक एक्सचेंज से लाइब्रेरी आयात करने और global.asax फ़ाइल में कोड का उपयोग करने की आवश्यकता है –

संबंधित मुद्दे