Azure Redis 缓存的 ASP.NET 会话状态提供程序

Azure Redis Cache 提供了一个会话状态提供程序,你可以使用其在缓存中(而不是内存中或在 SQL Server 数据库中)存储会话状态。要使用缓存会话状态提供程序,先首先配置缓存,然后使用 Redis 缓存会话状态 NuGet 包配置用于缓存的 ASP.NET 应用程序。

在缓存中存储 ASP.NET 会话状态

  1. 若要使用 Redis Cache Session State NuGet 程序包配置 Visual Studio 中的应用程序,请右键单击解决方案资源管理器中的项目,然后选择管理 NuGet 程序包

  2. 将 RedisSessionStateProvider 键入联机搜索文本框中,从结果中选择,单击安装

    备注
    Redis Session State Provider NuGet 程序包对 StackExchange.Redis.StrongName 程序包有依赖。如果 StackExchange.Redis.StrongName 程序包未在项目中显示,其将安装。请注意,除具有强名称 StackExchange.Redis.StrongName 程序包,还有 StackExchange.Redis 非强名称版本。如果你的项目使用非强命名 StackExchange redis 版本,在安装 Redis Session State Provider NuGet 程序包前后,你必须将其卸载,否则你将获取与项目中冲突的名称。有关这些程序包的更多信息,请参阅 配置 Azure Redis Cache 的 .NET 缓存客户端

    NuGet 程序包下载并添加所需的程序集引用,然后添加以下会话到 web.config 文件,该文件包含 ASP.NET 应用程序所需的配置以使用 Redis Cache 会话状态提供程序。

    XML

      <sessionState mode="Custom" customProvider="MySessionStateStore">
          <providers>
            <!--
              <add name="MySessionStateStore"
                host = "127.0.0.1" [String]
                port = "" [number]
                accessKey = "" [String]
                ssl = "false" [true|false]
                throwOnError = "true" [true|false]
                retryTimeoutInMilliseconds = "0" [number]
                databaseId = "0" [number]
                applicationName = "" [String]
                connectionTimeoutInMilliseconds = "5000" [number]
                operationTimeoutInMilliseconds = "5000" [number]
              />
            -->
            <add name="MySessionStateStore" type="Microsoft.Web.Redis.RedisSessionStateProvider" host="127.0.0.1" accessKey="" ssl="false" />
          </providers>
        </sessionState>
    

    注释部分提供了属性示例和每个属性的演示设置。

  3. 为 Azure Management Portal Preview 缓存边栏中的属性配置该值,并配置所需的其他值。

    备注
    有关访问缓存属性的说明,请参阅 Review cache settings

    • host – 指定缓存端点。
    • port – 根据 ssl 设置,使用非 SSL 端口或 SSL 端口。
    • accessKey – 使用缓存的主密钥或次密钥。
    • ssl – 如果你想保护缓存/客户端与 SSL 的通信,true;否则为 false。确保指定正确的 port

      重要提示
      默认情况下,对新缓存禁用了非 SSL 端口。将此设置指定为 true 以使用 SSL 端口。有关启用非 SSL 端口的详细信息,请参阅在 Azure Redis Cache 中配置缓存主题中的Access Ports

    • throwOnError – 如果由于故障而引发异常,则为 true;如果希望操作失败而不提示,则为 false。通过选中Microsoft.Web.Redis.RedisSessionStateProvider.LastException 属性检查故障。默认值为 true
    • retryTimeoutInMilliseconds – 在此期间(以毫秒计)将重试失败的操作。第一次重试发生 20 毫秒后,每秒重试一次,直到retryTimeoutInMilliseconds 间隔期满。此间隔后立即重试最后一次操作。如果操作仍失败,根据 throwOnError 设置,将异常情况返回到调用程序。默认值为 0,这意味没有重试。
    • databaseId – 指定用于缓存输出数据的数据库。如果未指定,则使用默认值 0
    • applicationName – 密钥在 Redis 中存储为 <AppName>_<SessionId>_Data。这将使多个应用程序共享同一个密钥。此参数为可选,如果不提供,就使用默认值。
    • connectionTimeoutInMilliseconds – 此设置允许你覆盖 StackExchange.Redis 客户端中的 connectTimeout 设置。如果未指定,则使用 5000 的默认 connectTimeout 设置。有关详细信息,请参阅 TechNet 上的 StackExchange.Redis 配置模型
    • operationTimeoutInMilliseconds – 此设置允许你覆盖 StackExchange.Redis 客户端中的 syncTimeout 设置。如果未指定,则使用 1000 的默认 syncTimeout 设置。有关详细信息,请参阅 TechNet 上的 StackExchange.Redis 配置模型

    有关这些属性的详细信息,请参阅 适用于 Redis 的 ASP.NET 会话状态提供程序通告上的原始博客中发布的通告。

  4. 请不要忘记将 web.config 文件中的标准 InProc 会话状态提供程序注释掉。

    XML

    <!-- <sessionState mode="InProc"
          customProvider="DefaultSessionProvider">
          <providers>
            <add name="DefaultSessionProvider"
                  type="System.Web.Providers.DefaultSessionStateProvider,
                        System.Web.Providers, Version=1.0.0.0, Culture=neutral,
                        PublicKeyToken=31bf3856ad364e35"
                  connectionStringName="DefaultConnection" />
          </providers>
      </sessionState> -->
    

一旦执行这些步骤,将配置应用程序以使用 Redis 缓存会话状态提供程序。在你使用应用程序中的会话时,其将在 Azure Redis Cache 实例中存储。

时间: 2024-08-02 17:13:05

Azure Redis 缓存的 ASP.NET 会话状态提供程序的相关文章

Azure Redis Cache

将于 2014 年 9 月 1 日停止Azure Shared Cache服务,因此你需要在该日期前迁移到 Azure Redis Cache.Azure Redis Cache包含以下两个层级的产品. 基本版 – 单节点,多规格. 标准版 – 主/从双节点,多规格.标准层产品将具有 99.9% 的 SLA. 具体文档参看 http://azure.microsoft.com/zh-cn/documentation/articles/cache-dotnet-how-to-use-azure-r

Azure Redis Cache (1) 入门

<Windows Azure Platform 系列文章目录> Microsoft Azure Redis Cache基于流行的开源Redis Cache. 1.功能 Redis 是一种高级的键值存储,其中,键可以包含数据结构,例如字符串.哈希.列表.集合和有序集合.Redis 支持针对这些数据类型的一组原子操作. Redis 还支持设置简单的主-从复制,具有非常快的非首先阻止同步.网络分割时自动重新连接等. 其他功能包括事务.发布/订阅.Lua 脚本.具有有限生存时间的键和配置设置,使 Re

C#实现的Redis缓存公共类库项目

Redis在当下的互联网项目当中的普及率我想都不用多说了,本文要介绍的這个项目是基于我对Redis理解程度的基础上写的一个公共类库项目,希望对各位童鞋有所帮助,也欢迎各位对我都内容提出更好的意见. 由于本文使用了自定义配置相关的只是,如有不了解的童鞋,可以先去了解一下這方面的知识然后再来看相应的代码,這样可能想过会更好,下面正式进入正题(初次写這个东西,语言组织不合理请大家谅解). 项目概览: 该项目主要分成两部分,配置和业务扩展两部分组成,具体项目结构如下: 自定义配置:建立配置项的目的主要是

如何在C#Asp.Net MVC使用Redis缓存

为什么要在Asp.Net MVC项目中使用Redis缓存呢?系统是按照高负载高并发来设计的,这就涉及服务器集群带来的问题,Session存储验证码或登录信息,在系统登录的时候,可能展示登录界面和存储验证码是一台服务器,登录验证的时候又是另外一个服务器,就会造成验证码找不到.重复登录等现象,所以必须系统公用的信息数据存储在一个地方,所有的服务器都从这个地方获取,这时我们就要用到Redis了,为什么要用Redis?Redis有什么优点?请自行度娘.下面我跟小伙伴们说说如何在C#Asp.Net MVC

asp.net性能优化之使用Redis缓存(入门)

1:使用Redis缓存的优化思路 redis的使用场景很多,仅说下本人所用的一个场景: 1.1对于大量的数据读取,为了缓解数据库的压力将一些不经常变化的而又读取频繁的数据存入redis缓存 大致思路如下:执行一个查询 1.2首先判断缓存中是否存在,如存在直接从Redis缓存中获取. 1.3如果Redis缓存中不存在,实时读取数据库数据,同时写入缓存(并设定缓存失效的时间). 1.4缺点,如果直接修改了数据库的数据而又没有更新缓存,在缓存失效的时间内将导致读取的Redis缓存是错误的数据. 2:R

C# Azure 分布式缓存Redis的新建与配置

1. 介绍 Redis 是一款开源的,基于 BSD 许可的,高级键值 (key-value) 缓存 (cache) 和存储 (store) 系统.由于 Redis 的键包括 string,hash,list,set,sorted set,bitmap 和 hyperloglog,所以常常被称为数据结构服务器.你可以在这些类型上面运行原子操作,例如,追加字符串,增加哈希中的值,加入一个元素到列表,计算集合的交集.并集和差集,或者是从有序集合中获取最高排名的元素. 为了满足高性能,Redis 采用内

将asp.net MVC导入 Azure Redis Cache

http://blogs.msdn.com/b/msdntaiwan/archive/2014/06/08/15-asp-net-mvc-movie-azure-redis-cache.aspx 将asp.net MVC导入 Azure Redis Cache

自定义ASP.NET Identity(三)- 实现自定义MySQL ASP.NET Identity存储提供程序

ASP.NET Identity是一个可扩展的系统,你可以创建属于你自己的存储提供程序并且将它集成到你的应用中,而不需要重构你的应用.本章将介绍如何创建一个ASP.NET Identity的MySQL存储提供程序.关于如何创建自定义存储提供程序的概述请查看自定义ASP.NET Identity(一)- 自定义ASP.NET Identity存储提供程序.要完成这个指南,你必须安装Visual Studio 2013 Update 2. 这个指南将包含如下内容: 怎样在Azure上创建MySQL数

使用redis缓存加索引处理数据库百万级并发

使用redis缓存加索引处理数据库百万级并发 前言:事先说明:在实际应用中这种做法设计需要各位读者自己设计,本文只提供一种思想.准备工作:安装后本地数redis服务器,使用mysql数据库,事先插入1000万条数据,可以参考我之前的文章插入数据,这里不再细说.我大概的做法是这样的,编码使用多线程访问我的数据库,在访问数据库前先访问redis缓存没有的话在去查询数据库,需要注意的是redis最大连接数最好设置为300,不然会出现很多报错. 贴一下代码吧 1 2 3 4 5 6 7 8 9 10 1