redis有多個數據庫
一、redis 中的每個數據庫,都由一個 redisDb 的結構存儲。其中,redisDb.id 存儲着 redis 數據庫以整數表示的號碼。redisDb.dict 存儲着該庫全部的鍵值對數據。redisDb.expires 保存着每個鍵的過時時間。git
二、當redis 服務器初始化時,會預先分配 16 個數據庫(該數量能夠經過配置文件配置),全部數據庫保存到結構 redisServer 的一個成員 redisServer.db 數組中。當咱們選擇數據庫 select number 時,程序直接經過 redisServer.db[number] 來切換數據庫。有時候當程序須要知道本身是在哪一個數據庫時,直接讀取 redisDb.id 便可。github
三、既然咱們知道一個數據庫的全部鍵值都存儲在redisDb.dict中,那麼咱們要知道若是找到key的位置,redis 的字典使用哈希表做爲其底層實現。redis
StackExchange.Redis,確定少不了提一下ServiceStack.Redis,這兩個都是redis在c#裏面比較優秀的SDk.數據庫
ServiceStack.Redis 4 開始已經收費了,因此你懂的.StackOverflow他們在開發並使用StackExchange.Redisc#
我想可能微軟也看見了它的"厲害",因此在微軟官方出的RedisSessionStateProvider中也是採用的StackExchange.Redis來實現的數組
使用Nuget安裝RedisSessionStateProvider,sessionState的模式默認有Custom,InProc,Off,SQLServer,StateServer這五種,默認的就是InProc,也就是咱們經常使用的進程內Session.使用自定義的Session實現確定就要選Custom模式了.服務器
Web.config配置session
1 <sessionState mode="Custom" customProvider="MySessionStateStore"> 2 <providers> 3 <add name="MySessionStateStore" type="Microsoft.Web.Redis.RedisSessionStateProvider" connectionString="ip:端口,password=密碼,ssl=false,abortConnect=false,connectTimeout=5000"/> 4 </providers> 5 </sessionState>
如在代碼中使用 Session["redissession"] = "sa";ide
則生成兩個Hash key 學習
其中wmhe4v0zvbbfinkdnckutv4l就是ASP.NET_SessionId,經過監視請求也能夠看見
StackExchange.Redis能夠實現Redis全部命令,經常使用操做查看https://github.com/StackExchange/StackExchange.Redis
若是以爲本文對你有所幫助不妨點一下【推薦】! 若是文中有不妥或者錯誤的地方還望指出,以避免誤人子弟。
做者:張一輝
出處:http://www.cnblogs.com/zhangyihui/
本文以學習、研究和分享爲主,版權歸做者和博客園共有,歡迎轉載,但必須在文章頁面明顯位置給出此段申明。