2017-09-13 87 views
0

我無法決定是否使用InProc或Redis來存儲用戶會話+一些額外的數據(用戶名,電子郵件等)一個高性能的web應用程序InProc vs Redis中的會話存儲(Asp.Net MVC 5),具有可擴展性

那麼兩者的優缺點是什麼?因爲Redis選項有使用HTTP連接的缺點 - 網絡延遲和HTTP使用的消耗TCP連接。

此外,將InProc方式使用到位或不同服務器上的多個IIS工人(使用負載均衡)持有的應用前景

注:如果我將使用Redis的,我會通過自定義操作注入會話狀態屬性到控制器中的屬性。

回答

1

在Web場景中,請求可以轉到Web場中的任何工作進程。在這種情況下使用進程內會話狀態存儲可能會導致數據丟失,如果同一會話的不同請求由不同的工作進程提供。但是,如果僅使用單個Web服務器,那麼進程內會話狀態提供程序應該是最快的,因爲沒有額外的網絡延遲。

Redis作爲分佈式緩存工作,並且Redis會話狀態提供程序可以很好地用於Web場景,因爲Web場中的所有各種工作進程都將與單個Redis實例進行通信。將Redis實例物理放置在Web場實例附近可以在一定程度上幫助減少延遲。