.Net分布式架構(二):基於Redis的Session共享


一:Session簡介

  Session是什么呢?簡單來說就是服務器給客戶端的一個編號。當一台web服務器運行時,可能有若干個用戶瀏覽正在運正在這台服務器上的網站。當每個用戶首次與這台web服務器建立連接時,他就與這個服務器建立了一個Session,同時服務器會自動為其分配一個SessionID,用以標識這個用戶的唯一身份。這個SessionID是由web服務器隨機產生的一個由24個字符組成的字符串,我們會在下面的實驗中見到它的實際樣子。

二:Asp.Net中Session的集中模式和配置

  (1):InProc,Session存儲在進程內,這也是ASP.Net中的存儲方式,也是默認值

  (2): StateServer,Session存儲在獨立的狀態服務即ASP.NET State Service中

  (3):SQLServer,Session存儲在SQL Server數據庫中

  (4):Custom,自定義保存方式,可以保存在Oracle、SQLServer、MongoDb、Redis中

  本片文章主要講述Session在Redis中的存儲和共享

三:基於Redis的Session Provider配置

 (1)分別對站點A和B的HomeController做如下更改,如下圖所示,增加了創建Session和獲取Session功能

  

  

  分別對應的View視圖

  

   

   (2)RedisProvider配置:Microsoft.Web.RedisSessionStateProvider

    用Nuget安裝Microsoft.Web.RedisSessionStateProvider,如下圖:

   

        修改配置文件:

   

   Redis的安裝請參見:《Redis在Linux環境上的安裝和啟動》

 

四:負載均衡Session測試

  (1)瀏覽器中輸入:http://192.168.152.128/   創建Session

  

     (2)瀏覽器中輸入:http://192.168.152.128/home/getsessionvalue, 打開兩個Tab,一定要在同一個瀏覽器窗口中打開,否則SessionID肯定是不一樣

  

  從圖中可以看到站點A共享站點B創建的Session。

  從redis中也可以看出剛剛創建的Session,如下圖

  

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM