SessionStateMode之Redis共享session


周六的時候用SQL Server來實現session共享,今天下班早就試了下使用Redis來實現session共享。接着上一篇博客,上一篇使用sessionState節點mode="SQLServer"來實現不同應用的session共享,其實它還有一個mode="custom",用它可以將session放在redis等其他的緩存數據庫中。

一、redis服務端配置

關於Redis的服務端配置我之前的博客里面也有,可以參考我的博客C#Redis主從復制,這里只啟動了一個redis,端口為6379.

二、Web應用配置

1.RedisProvider配置

使用nuget查找redissession,安裝RedisSessionProvider,WebForm和MVC中都要進行安裝

2.安裝之后又readme,里面有提示,怎么使用RedisSessionProvider

在webform、mvc的web.config中配置下面的sessionState節點

    <sessionState mode="Custom" customProvider="RedisSessionProvider">
      <providers>
        <add name="RedisSessionProvider" type="RedisSessionProvider.RedisSessionStateStoreProvider, RedisSessionProvider" host="127.0.0.1" port="6379" accessKey="" ssl="false"/>
      </providers>
    </sessionState>

在Global文件中配置下面的代碼,並添加引入

using RedisSessionProvider.Config;
using StackExchange.Redis;

            ConfigurationOptions redisConfigOpts = StackExchange.Redis.ConfigurationOptions.Parse("127.0.0.1:6379");
            RedisSessionProvider.Config.RedisConnectionConfig.GetSERedisServerConfig = (HttpContextBase context) =>
            {
                return new KeyValuePair<string, StackExchange.Redis.ConfigurationOptions>(
                    "DefaultConnection",
                    redisConfigOpts);
            };

對於webform設置session和mvc獲取session就不貼上了,上一博客也有,先運行webform,然后運行mvc,此時會出錯如下圖,這個需要將StackExchange.Redis.dll更新到最新。

 

使用redis-cli客戶端查看redis存的數據,可以看到端口6379中有keys,而這個key其實就是sessionid,在瀏覽器中也是可以看到的。

三、運行demo

先啟動webform,然后啟動mvc,可以在mvc中通過ViewBag獲取到的session。

四、總結

這個僅是一個簡單的demo,在實際應用中一般會通過nginx來進行負載均衡,及在瀏覽器到服務器直接通過nginx來進行web服務器的負載均衡,在web服務器到redis直接也是通過nginx來進行負載均衡,redis進行主從復制,這樣可以很方便的進行水平擴展。

參考:http://www.cnblogs.com/yanweidie/tag/%E5%88%86%E5%B8%83%E5%BC%8F%E7%B3%BB%E7%BB%9F%E6%9E%B6%E6%9E%84/

http://www.cnblogs.com/sunyj/p/5413495.html


免責聲明!

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



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