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/
本文以学习、研究和分享为主,版权归做者和博客园共有,欢迎转载,但必须在文章页面明显位置给出此段申明。