C# Azure 存储-分布式缓存Redis在session中的配置
1. 开始
对于分布式的缓存,平常的session的处理是一个用户对应一台分布式的机器,如果这台机器中途挂机或者不能处理这个用户session的情况发生,则此用户的session会丢失,会发生不可预知的错误。如下图:

如果用Redis的分布式缓存,则能避免上面的情况。因为session是保存在Redis中,不会有丢失的情况,就算中途有服务器A挂掉。如下图:

2. 代码
1)在包管理器中,输入下面的包,安装
Install-Package Microsoft.Web.RedisSessionStateProvider
2)可以看到web.config中自动添加了以下代码:
<sessionState mode="Custom" customProvider="MySessionStateStore" timeout="">
<providers>
<!-- For more details check https://github.com/Azure/aspnet-redis-providers/wiki -->
<!-- Either use 'connectionString' OR 'settingsClassName' and 'settingsMethodName' OR use 'host','port','accessKey','ssl','connectionTimeoutInMilliseconds' and 'operationTimeoutInMilliseconds'. -->
<!-- 'throwOnError','retryTimeoutInMilliseconds','databaseId' and 'applicationName' can be used with both options. -->
<!--
<add name="MySessionStateStore"
host = "127.0.0.1" [String]
port = "" [number]
accessKey = "" [String]
ssl = "false" [true|false]
throwOnError = "true" [true|false]
retryTimeoutInMilliseconds = "" [number]
databaseId = "" [number]
applicationName = "" [String]
connectionTimeoutInMilliseconds = "" [number]
operationTimeoutInMilliseconds = "" [number]
connectionString = "<Valid StackExchange.Redis connection string>" [String]
settingsClassName = "<Assembly qualified class name that contains settings method specified below. Which basically return 'connectionString' value>" [String]
settingsMethodName = "<Settings method should be defined in settingsClass. It should be public, static, does not take any parameters and should have a return type of 'String', which is basically 'connectionString' value.>" [String]
loggingClassName = "<Assembly qualified class name that contains logging method specified below>" [String]
loggingMethodName = "<Logging method should be defined in loggingClass. It should be public, static, does not take any parameters and should have a return type of System.IO.TextWriter.>" [String]
redisSerializerType = "<Assembly qualified class name that implements Microsoft.Web.Redis.ISerializer>" [String]
/>
-->
<add name="MySessionStateStore"
type="Microsoft.Web.Redis.RedisSessionStateProvider"
host="ceswebchat.redis.cache.chinacloudapi.cn"
accessKey="m1JuDEstaqA+xxxxxxxxxxx"
ssl="false"
throwOnError = "true"
retryTimeoutInMilliseconds = ""
connectionTimeoutInMilliseconds = ""
operationTimeoutInMilliseconds = ""
databaseId = ""
/>
</providers>
</sessionState>
上面可以看到,输入你所需的信息就可以了。很简单
- host – Redis Cache的host name/endpoint
 - port – 使用你的Redis Cache的SSL port或者非SSL port,这取决你的ssl设置的值
 - accessKey – Redis Cache的Keys
 - ssl – true (Cache/Client之间安全的通信); 否则设为 false
- 默认禁用 non-SSL port,有关启用 non-SSL port,参阅 Access Ports
 
 - throwOnError – true (在事件出错时抛出异常),否则设为 false. 你可以在静态属性 Microsoft.Web.Redis.RedisSessionStateProvider.LastException检查异常信息, 默认为true。
 - retryTimeoutInMilliseconds – 在此时间间隔内重试操作(单位:毫秒)
 - databaseId – 指定一个数据库用来存储缓存输入数据。如果未指定,默认值为0。
 - applicationName – 缓存key存储在Redis中命名规则为:
{<Application Name>_<Session ID>}_Data,如果多个应用程序共享相同的key,则这个参数是可选的。 如果不设置该参数将使用默认值。 - connectionTimeoutInMilliseconds – 这个设置会覆盖connectTimeout参数设置。如果未设置,那么会使用默认的connectTimeout值5000,详情请参考 StackExchange.Redis configuration model.
 - operationTimeoutInMilliseconds – 这个设置会覆盖syncTimeout参数设置。如果未设置,那么会使用默认的syncTimeout值1000,详情请参考 StackExchange.Redis configuration model.
 
C# Azure 存储-分布式缓存Redis在session中的配置的更多相关文章
- C# Azure 存储-分布式缓存Redis的新建&配置&查看
		
1. 介绍 Redis 是一款开源的,基于 BSD 许可的,高级键值 (key-value) 缓存 (cache) 和存储 (store) 系统.由于 Redis 的键包括 string,hash,l ...
 - C# Azure 存储-分布式缓存Redis工具类 RedisHelper
		
using System; using System.Collections.Generic; using Newtonsoft.Json; using StackExchange.Redis; na ...
 - 分布式缓存Redis应用场景解析
		
Redis的应用场景非常广泛.虽然Redis是一个key-value的内存数据库,但在实际场景中,Redis经常被作为缓存来使用,如面对数据高并发的读写.海量数据的读写等. 举个例子,A网站首页一天有 ...
 - ASP.Net Core使用分布式缓存Redis从入门到实战演练
		
一.课程介绍 人生苦短,我用.NET Core!缓存在很多情况下需要用到,合理利用缓存可以一方面可以提高程序的响应速度,同时可以减少对特定资源访问的压力. 所以经常要用到且不会频繁改变且被用户共享的 ...
 - .NET分布式缓存Redis从入门到实战
		
一.课程介绍 今天阿笨给大家带来一堂NOSQL的课程,本期的主角是Redis.希望大家学完本次分享课程后对redis有一个基本的了解和认识,并且熟悉和掌握 Redis在.NET中的使用. 本次分享课程 ...
 - 第十章 企业项目开发--分布式缓存Redis(2)
		
注意:本章代码是在上一章的基础上进行添加修改,上一章链接<第九章 企业项目开发--分布式缓存Redis(1)> 上一章说了ShardedJedisPool的创建过程,以及redis五种数据 ...
 - 三点须知:当我们在开发过程中需要用到分布式缓存Redis的时候
		
当我们在开发过程中需要用到分布式缓存Redis的时候,我们首先要明白缓存在系统中用来做什么? 1. 少量数据存储,高速读写访问.通过数据全部in-momery 的方式来保证高速访问,同时提供数据落地的 ...
 - 一个技术汪的开源梦 —— 公共组件缓存之分布式缓存 Redis 实现篇
		
Redis 安装 & 配置 本测试环境将在 CentOS 7 x64 上安装最新版本的 Redis. 1. 运行以下命令安装 Redis $ wget http://download.redi ...
 - 企业项目开发--分布式缓存Redis
		
第九章 企业项目开发--分布式缓存Redis(1) 注意:本章代码将会建立在上一章的代码基础上,上一章链接<第八章 企业项目开发--分布式缓存memcached> 1.为什么用Redis ...
 
随机推荐
- maven打包时,依赖包打不进jar包中
			
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/20 ...
 - animation_Frame动画图片轮播
			
我们刚接触的时候想弄一个轮播图片的一个小案例,但一开始我们以为和以前写java一样,要写一下方法,逻辑:但今天你学了这个Frame动画就可以轻松搞定!下面我们来看看这个Frame是怎么实现的. 第一步 ...
 - JS冒泡排序(div)
			
更生动的排序动画. 通过改变div的高度来实现排序,通过闭包来实现for循环的睡眠时间. <!doctype html> <html lang="en"> ...
 - SQLServer CASE WHEN 用法
			
SELECT sc.NAME AS 学校名称 ,xueyuan.NAME AS 院系 ,StudentNo AS 学号 ,st.StudentName AS 学生姓名 ,st.sex AS 性别 ,s ...
 - Android 学习笔记之一 “Unable to establish loopback connection”
			
今天碰到一个错误:Unable to establish loopback connection,在网上找各种方法都解决不了,后来看一个帖子说是要关闭系统防火墙,尝试了下还是不行.最后是进任务管理器杀 ...
 - 在Andoid开发中使用MVP模式来解耦,增加可测试性
			
by Jeff Angelini posted on 7/20/2011 2:35:00 PM 将应用程序UI的表现从Ui的逻辑中分离是一个好的想法.这种分离减少了代码耦合,代码更加干净, 甚至可以有 ...
 - 案例1.用Ajax实现用户名的校验
			
用Ajax实现用户名的校验 java的验证类 public class UserDao { public boolean checkUserName(String name) { //这里的name是 ...
 - 移动端常用的meta
			
1. 禁止缩放:<meta name="viewport" content="width=device-width, initial-scale=1.0, maxi ...
 - 文档ID:某某 模板文件不存在,无法解析文档!
			
如果是生成栏目列表时出现这样的问题]: 1.可以修改include/arc.listview.class.php这个文件. 2.复制代码 echo "模板文件不存在,无法解析文档 ...
 - MAC apache配置
			
启动 apache:在terminal中输入命令,sudo apachectl start 启动成功后访问lcoalhost会显示“It works”. 更改默认路径:命令行输入“sudo vim / ...