码迷,mamicode.com
首页 > 其他好文 > 详细

Redis和StackExchange.Redis

时间:2017-10-17 15:46:34      阅读:148      评论:0      收藏:0      [点我收藏+]

标签:sof   定义   blog   web   lan   com   pass   nbsp   查看   

redis有多个数据库
1、redis 中的每一个数据库,都由一个 redisDb 的结构存储。其中,redisDb.id 存储着 redis 数据库以整数表示的号码。redisDb.dict 存储着该库所有的键值对数据。redisDb.expires 保存着每一个键的过期时间。

2、当redis 服务器初始化时,会预先分配 16 个数据库(该数量可以通过配置文件配置),所有数据库保存到结构 redisServer 的一个成员 redisServer.db 数组中。当我们选择数据库 select number 时,程序直接通过 redisServer.db[number] 来切换数据库。有时候当程序需要知道自己是在哪个数据库时,直接读取 redisDb.id 即可。

技术分享

3、既然我们知道一个数据库的所有键值都存储在redisDb.dict中,那么我们要知道如果找到key的位置,redis 的字典使用哈希表作为其底层实现。

StackExchange.Redis,肯定少不了提一下ServiceStack.Redis,这两个都是redis在c#里面比较优秀的SDk.

ServiceStack.Redis 4 开始已经收费了,所以你懂的.StackOverflow他们在开发并使用StackExchange.Redis

我想可能微软也看见了它的"厉害",所以在微软官方出的RedisSessionStateProvider中也是采用的StackExchange.Redis来实现的

StackExchange.Redis实现Session

使用Nuget安装RedisSessionStateProvider,sessionState的模式默认有Custom,InProc,Off,SQLServer,StateServer这五种,默认的就是InProc,也就是我们常用的进程内Session.使用自定义的Session实现肯定就要选Custom模式了.

Web.config配置

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";

则生成两个Hash key 

技术分享

其中wmhe4v0zvbbfinkdnckutv4l就是ASP.NET_SessionId,通过监视请求也可以看见

技术分享

StackExchange.Redis可以实现Redis所有命令,常用操作查看https://github.com/StackExchange/StackExchange.Redis

Redis和StackExchange.Redis

标签:sof   定义   blog   web   lan   com   pass   nbsp   查看   

原文地址:http://www.cnblogs.com/zxtceq/p/7680641.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!