2015-04-13 26 views
6

Web uygulamamıza Redis oturum durumu sağlayıcısı uygulamıştık ve bir çekicilik gibi çalışıyor ancak redis sunucusu başarısız olursa veya web sunucusu redis sunucusuna bağlanamazsa ne olacağını merak ediyorum.ASP.Net Session State Sağlayıcı Yük Devretme Senaryoları

InProc Oturum Durumu yönetimini Redis'in yerine çalışma olarak kullanmanın bir yolu var mı? Birden çok oturum durumu sağlayıcılarını bildirmekle ilgili bir belge bulamıyorum, çünkü redis başarısız olursa, sistem inproc kullanılarak çalışmaya devam edebilir. (Redis oturum durumlarını kaybetmeyi kabul ediyorum ve başarısızlık durumunda sıfırdan başlayıp tekrar oturum durumlarını kaybeder ve redis mümkün olduğunda tekrar sıfırdan başlar)

cevap

0

Redis sunucunuz için köle tanımlamanız ve redis kullanmanız gerekir. sunucunuzu izlemek için sentinel

+0

Yani ASP.Net ınproc –

+0

Kontrol bu bilet http://stackoverflow.com/questions/15437334/how-to-tell-a-client-where-the gibi REDIS alternatif yapılandırmak için bir yolu yoktur -new-redis-master-kullanıyor-sentinel –

+2

@alirezam ASP.NET Redis Oturum Durumu Sağlayıcısının redis sentinellerini desteklediğine inanmıyorum. Aksini biliyorsanız, yanılmaktan çok mutlu olurdum. – Hovis

-1

Redis sunucusuna bağlanmak için StackExchange kütüphanesini kullanıyorum.O sadece etkinliğe nasıl abone olacağınızı gösteren basit bir kod ve bunu nihai bir çözüm olarak görmüyor.Ne zaman size yeni bir sunucu seçtiyseniz Yeni bir sunucu seçebilmeniz için bunun için bir etkinlik alacaksınız.

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

Bu cevap neden reddedildi? – Tom

+0

"+ switch-master" etkinliğine abone olmaz mıydınız? Ayrıca, kodunuz anahtarın uygulamada nasıl yapıldığını tam olarak söylemez. Olay işleyicisini detaylandırır mısınız lütfen? – Tom

+0

Kitaplıklarını StackExchange'den almanız ve kodu global.asax dosyasında kullanmanız gerekir. –

İlgili konular