• Redis和StackExchange.Redis


    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

  • 相关阅读:
    javaweb大文件上传
    java+大文件分段上传
    php文件断点上传
    java+断点续传
    .net断点续传
    PHP检测每一段代码执行时间
    javaScript阻止浏览器F5刷新
    PHP动态修改配置文件
    eval()计算某个字符串,js和jquery都可以使用
    php 访问java接口数据
  • 原文地址:https://www.cnblogs.com/zxtceq/p/7680641.html
Copyright © 2020-2023  润新知