我使用Redis作爲會話狀態提供程序,但由於我有很多用戶,有時會發生Redis宕機。所以我想要有一個默認的會話狀態提供程序來防止第一個發生故障。Redis會話狀態提供程序管理回退
這可能嗎? 任何其他解決方案?
感謝
我使用Redis作爲會話狀態提供程序,但由於我有很多用戶,有時會發生Redis宕機。所以我想要有一個默認的會話狀態提供程序來防止第一個發生故障。Redis會話狀態提供程序管理回退
這可能嗎? 任何其他解決方案?
感謝
ASP.NET的會話管道不支持回退到不同的會話提供程序,因此回退功能將不得不烘焙到Redis會話狀態提供程序中。但是Redis提供商只與Redis進行會談,所以您必須自己完成此操作,無論是在您自己的分支project中,還是創建自己的自定義會話提供程序,該自定義會話提供程序從SessionStateStoreProviderBase繼承幷包裝對RedisSessionStateProvider的訪問權限(以及任何回退如果您的提供商檢測到Redis中斷,則希望使用存儲邏輯)。你現在應該在哪裏臨時存儲數據(一個進程內緩存?現在你說的是粘性會話,SQL Server?還有另一個要管理的服務器)...並且,一旦Redis重新啓動,您如何使用臨時存儲中的活動會話重新填充它?有很多問題需要考慮,毫無疑問,微軟不支持它。
所以,您最好的選擇就像@MatíasFidemraizer提到的那樣,將精力集中在改進您的Redis部署上,以便它可以處理您的負載並使用Redis Sentinel設置主從複製來執行自動故障轉移。如果工作太多,那麼有一些商業解決方案會爲您解決故障(我工作的公司有一個簡單的產品,名稱爲ScaleOut SessionServer)
,因爲我有很多用戶有時碰巧Redis的下降
我懷疑,這應該在幕後的原因。你有足夠的內存嗎?可能有很多原因,但我懷疑這個問題是「很多用戶」,除非你是Google,Twitter或某些網站流量極高,畢竟Redis也是針對該用例設計的......
所以我會跳過,你會如何切換狀態提供商的一部分,我會去:
任何其他解決辦法?
答案是Redis Sentinel (follow this link to learn more about it)。
從官方文檔:
的Redis哨兵對Redis的提供高可用性。在實際的 術語中,這意味着使用Sentinel可以創建Redis部署 ,該功能在沒有人爲干預的情況下可抵抗某些類型的故障。
會話狀態提供程序是什麼技術? –
然後,我使用ASP.NET – ayasha
,問題中的asp.net標記在哪裏? –