2016-01-14 50 views
2

我使用Redis作爲會話狀態提供程序,但由於我有很多用戶,有時會發生Redis宕機。所以我想要有一個默認的會話狀態提供程序來防止第一個發生故障。Redis會話狀態提供程序管理回退

這可能嗎? 任何其他解決方案?

感謝

+0

會話狀態提供程序是什麼技術? –

+0

然後,我使用ASP.NET – ayasha

+0

,問題中的asp.net標記在哪裏? –

回答

1

ASP.NET的會話管道不支持回退到不同的會話提供程序,因此回退功能將不得不烘焙到Redis會話狀態提供程序中。但是Redis提供商只與Redis進行會談,所以您必須自己完成此操作,無論是在您自己的分支project中,還是創建自己的自定義會話提供程序,該自定義會話提供程序從SessionStateStoreProviderBase繼承幷包裝對RedisSessionStateProvider的訪問權限(以及任何回退如果您的提供商檢測到Redis中斷,則希望使用存儲邏輯)。你現在應該在哪裏臨時存儲數據(一個進程內緩存?現在你說的是粘性會話,SQL Server?還有另一個要管理的服務器)...並且,一旦Redis重新啓動,您如何使用臨時存儲中的活動會話重新填充它?有很多問題需要考慮,毫無疑問,微軟不支持它。

所以,您最好的選擇就像@MatíasFidemraizer提到的那樣,將精力集中在改進您的Redis部署上,以便它可以處理您的負載並使用Redis Sentinel設置主從複製來執行自動故障轉移。如果工作太多,那麼有一些商業解決方案會爲您解決故障(我工作的公司有一個簡單的產品,名稱爲ScaleOut SessionServer

0

,因爲我有很多用戶有時碰巧Redis的下降

我懷疑,這應該在幕後的原因。你有足夠的內存嗎?可能有很多原因,但我懷疑這個問題是「很多用戶」,除非你是Google,Twitter或某些網站流量極高,畢竟Redis也是針對該用例設計的......

所以我會跳過,你會如何切換狀態提供商的一部分,我會去:

任何其他解決辦法?

答案是Redis Sentinel (follow this link to learn more about it)

從官方文檔:

的Redis哨兵對Redis的提供高可用性。在實際的 術語中,這意味着使用Sentinel可以創建Redis部署 ,該功能在沒有人爲干預的情況下可抵抗某些類型的故障。

相關問題