程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> 用Redis實現Session功能

用Redis實現Session功能

編輯:C#入門知識

Redis是一個開源的使用ANSI C語言編寫、支持網絡、可基於內存亦可持久化的日志型、Key-Value數據庫,並提供多種語言的API

---維基百科

InProc模式下容易丟失,並且引起並發問題。如果使用SQLServer或者SQLServer模式又消耗了性能

Redis采用這樣的方案解決了幾個問題,

1.Redis存取速度快。

2.用戶數據不容易丟失。

3.用戶多的情況下容易支持集群。

4.能夠查看在線用戶。

5.能夠實現用戶一處登錄。(通過代碼實現,後續介紹)

6.支持持久化。(當然可能沒什麼用)

程序需要取得用戶狀態時將sessionid做為key在Redis中查找。

自行攔截請求調用這個方法(demo有例子)

 

 

 
 
     
     
 
 

初始化配置

 sessionRedis= ConfigurationManager.AppSettings[ timeOut = ConfigurationManager.AppSettings[ (  Exception( (.IsNullOrEmpty(timeOut)=== host = sessionRedis.Split(.Parse( writeHost =  [] { host[ readHosts = host.Skip(=  PooledRedisClientManager(writeHost, readHosts, = writeReadCount,
                MaxReadPoolSize = writeReadCount,
                AutoStart = 

 

為了控制方便寫了一個委托

  
         
         
         
         
         F TryRedisWrite<F>(Func<IRedisClient, F>= =  (client =  Exception( + client.Host +  + (client != 

 一個調用的例子其他的具體看源碼

         
         
         
         
          KSet(Dictionary<, T><IRedisClient, > fun = (IRedisClient client) =><T> 

 

 

 

 

     
     
      
         
         
         context = cookie = (cookie ==  || ==

去存取用戶的方法

         
         
         
         
          Get<T>()  T:,  RedisClient<T> 
         
         
           RedisClient<> 
         
         
         
          Login<T>(T obj)  T : , RedisClient<T>().KSet(SessionId, obj,  TimeSpan(, Managers.TimeOut, 

 

 

 

         
         
         
         
          KSetEntryIn(<IRedisClient, > fun = (IRedisClient client) => 


封裝以後
 
 
  RedisClient<>().KSetEntryIn(SessionId,  TimeSpan(, Managers.TimeOut, 

 

這裡我利用了MVC3中的ActionFilter,攔截用戶的所有請求

  
         
         
          

 


在Global.asax中要注冊一下

   

 

 

 

    Session SessionExt( 

 

調用方法

     

 

點擊下載

 

SessionManager包含 獲取用戶列表數量,注銷某個用戶,根據用戶ID獲取用戶信息,在線用戶對象列表,在線用戶SessionId列表等方法

後續將實現用戶一處登錄功能

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved