文章出處

回到目錄

對于多WEB的環境現在已經是必須的了,很難想像一臺WEB服務器面對百萬并發的響應,所以,我們需要多臺WEB服務器集群合作,來緩解這種高并發,高吞吐的場景,而對于多WEB的場景又會有個問題出現,即session存儲的問題,如一個用戶登陸后,把一個狀態信息存儲到當前WEB服務器的session里,而你請求其它頁面時,很可能就被路由到另一臺服務器了,這時,session也就丟了,而對于這種情況,有人把redis這個存儲中間件想了起來,對它進行了封裝,就有了今天基于redis的session共享機制。

下面說下安裝方法

1 使用nuget安裝redis緩存 StackExchange.Redis
2 使用nuget安裝RedisSession服務  RedisSessionStateProvider
3 從nuget添加RedisSession之后,它會在你的config文件中寫入以下內容,主要是對session進行持久化設置的
   

<sessionState mode="Custom" customProvider="MySessionStateStore" timeout="30">
      <providers>
        <!-- Either use 'connectionString' and provide all parameters as string OR use 'host','port','accessKey','ssl','connectionTimeoutInMilliseconds' and 'operationTimeoutInMilliseconds'. -->
        <!-- 'throwOnError','retryTimeoutInMilliseconds','databaseId' and 'applicationName' can be used with both options. -->
        <!--
          <add name="MySessionStateStore"
            host = "127.0.0.1" [String]
            port = "" [number]
            accessKey = "" [String]
            ssl = "false" [true|false]
            throwOnError = "true" [true|false]
            retryTimeoutInMilliseconds = "5000" [number]
            databaseId = "0" [number]
            applicationName = "" [String]
            connectionTimeoutInMilliseconds = "5000" [number]
            operationTimeoutInMilliseconds = "1000" [number]
            connectionString = "<Valid StackExchange.Redis connection string>" [String]
            loggingClassName = "<Assembly qualified class name that contains logging method specified below>" [String]
            loggingMethodName = "<Logging method should be defined in loggingClass. It should be public, static, does not take any parameters and should have a return type of System.IO.TextWriter.>" [String]
          />
        -->
        <add name="MySessionStateStore" type="Microsoft.Web.Redis.RedisSessionStateProvider" host="127.0.0.1" accessKey="" ssl="false" />
      </providers>
    </sessionState>


4 下載是新版本的redis服務端,可以是windows版的,我用的是2.6.13,低版本的redis會出現Eval命令無法識別的問題
5 處理完成,可以測試你的session了,默認過期時間為1200秒

注意,上面sessionState里的timeout就是設置session超時的,它同樣使用于redis的存儲,下面是存在redis里的session,如圖

 

感謝我VIP群的哥們提出這個問題,并對session超時的設置進行了解決。

回到目錄

 


文章列表




Avast logo

Avast 防毒軟體已檢查此封電子郵件的病毒。
www.avast.com


arrow
arrow
    全站熱搜
    創作者介紹
    創作者 大師兄 的頭像
    大師兄

    IT工程師數位筆記本

    大師兄 發表在 痞客邦 留言(0) 人氣()