SessionStateMode之Redis共享session
周六的时候用SQL Server来实现session共享,今天下班早就试了下使用Redis来实现session共享。接着上一篇博客,上一篇使用sessionState节点mode="SQLServer"来实现不同应用的session共享,其实它还有一个mode="custom",用它可以将session放在redis等其他的缓存数据库中。
一、redis服务端配置
关于Redis的服务端配置我之前的博客里面也有,可以参考我的博客C#Redis主从复制,这里只启动了一个redis,端口为6379.

二、Web应用配置
1.RedisProvider配置
使用nuget查找redissession,安装RedisSessionProvider,WebForm和MVC中都要进行安装

2.安装之后又readme,里面有提示,怎么使用RedisSessionProvider

在webform、mvc的web.config中配置下面的sessionState节点
<sessionState mode="Custom" customProvider="RedisSessionProvider">
<providers>
<add name="RedisSessionProvider" type="RedisSessionProvider.RedisSessionStateStoreProvider, RedisSessionProvider" host="127.0.0.1" port="" accessKey="" ssl="false"/>
</providers>
</sessionState>
在Global文件中配置下面的代码,并添加引入
using RedisSessionProvider.Config;
using StackExchange.Redis;
ConfigurationOptions redisConfigOpts = StackExchange.Redis.ConfigurationOptions.Parse("127.0.0.1:6379");
RedisSessionProvider.Config.RedisConnectionConfig.GetSERedisServerConfig = (HttpContextBase context) =>
{
return new KeyValuePair<string, StackExchange.Redis.ConfigurationOptions>(
"DefaultConnection",
redisConfigOpts);
};
对于webform设置session和mvc获取session就不贴上了,上一博客也有,先运行webform,然后运行mvc,此时会出错如下图,这个需要将StackExchange.Redis.dll更新到最新。

使用redis-cli客户端查看redis存的数据,可以看到端口6379中有keys,而这个key其实就是sessionid,在浏览器中也是可以看到的。

三、运行demo
先启动webform,然后启动mvc,可以在mvc中通过ViewBag获取到的session。

四、总结
这个仅是一个简单的demo,在实际应用中一般会通过nginx来进行负载均衡,及在浏览器到服务器直接通过nginx来进行web服务器的负载均衡,在web服务器到redis直接也是通过nginx来进行负载均衡,redis进行主从复制,这样可以很方便的进行水平扩展。
参考:http://www.cnblogs.com/yanweidie/tag/%E5%88%86%E5%B8%83%E5%BC%8F%E7%B3%BB%E7%BB%9F%E6%9E%B6%E6%9E%84/
http://www.cnblogs.com/sunyj/p/5413495.html
SessionStateMode之Redis共享session的更多相关文章
- linux下实现redis共享session的tomcat集群
为了实现主域名与子域名的下不同的产品间一次登录,到处访问的效果,因此采用rediss实现tomcat的集群效果.基于redis能够异步讲缓存内容固化到磁盘上,从而当服务器意外重启后,仍然能够让sess ...
- SpringBoot,Security4, redis共享session,分布式SESSION并发控制,同账号只能登录一次
由于集成了spring session ,redis 共享session,导致SpringSecurity单节点的session并发控制失效, springSession 号称 无缝整合httpses ...
- Nginx+tomcat集群使用redis共享session
一 :nginx负载均衡 当Tomcat当做独立的Servlet容器来运行时,可看做是能运行Java Servlet的独立Web服务器. 此外 Tomcat还可以作为其他Web服务器进程内或者进程外的 ...
- Tomcat7.0.99集群使用Redis共享session方案
以前配置过给予多播的session共享方案,这回再配置一个redis共享session的. 先小小的炫耀一下: 相信大家要做Tomcat+Redis+session配置,遇到的头号麻烦就是编译的tom ...
- Spring Boot 使用 Redis 共享 Session 代码示例
参考资料 博客:spring boot + redis 实现session共享 1. 新建 Maven 工程 我新建 spring-boot-session-redis maven 工程 2. 引入 ...
- 一篇文章让你深透理解cookie和session,附带分布式WEB系统redis共享session方案
cookie和session有什么区别?这是一个很基础的知识点,大家可能都知道一个大概:cookie是存在客户端的,session是存储在服务端,cookie和session用来验证识别用户的登录状态 ...
- SpringBoot+Shiro+Redis共享Session入门小栗子
在单机版的Springboot+Shiro的基础上,这次实现共享Session. 这里没有自己写RedisManager.SessionDAO.用的 crazycake 写的开源插件 pom.xml ...
- SpringBoot系列: Redis 共享Session
Web项目Session管理是一个很重要的话题, 涉及到系统横向扩展, SpringBoot已经为共享Session很好的解决方案, 这篇文章关注使用Redis共享会话, 同时这也是最常用的方法. = ...
- 使用 Redis 共享 Session 会话
储存模式 1.InProc模式 这是ASP.NET默认的Session管理模式,在应用进程内维护Session. 2.StateServer模式 这是在服务器装了.NET环境后自带的一个StateSe ...
随机推荐
- HTML细节
link 设置body中超链接默认颜色 : alink 设置body中超链接点击时候的颜色: vlink 设置body中超链接访问过后的颜色 字体的大小 size 大小 取值范围 ...
- H5微信通过百度地图API实现导航方式二
要有服务器才行哦 <!DOCTYPE html><html><head> <meta http-equiv="Content-Type&quo ...
- java web 中有效解决中文乱码问题-pageEncoding与charset区别, response和request的setCharacterEncoding 区别
这里先写几个大家容易搞混的编码设置代码: 在jsp代码中的头部往往有这两行代码 pageEncoding是jsp文件本身的编码contentType的charset是指服务器发送给客户端时的内容编码J ...
- Java基础之数据类型、内存、修饰符、代码块
Java 数据类型 基本数据类型 数值:int.short.long 字符:char 布尔:boolean 引用数据类型 class(类) interface(接口) 数组[] 所占字节数(1 byt ...
- CLI子命令扩展-插件机制实现
开发CLI工具过程中,为了便于扩展,将CLI的实现分为基础功能和扩展功能.基础功能包括init.build.lint.publish等伴随工程从初始化到最终发布到生产环境,也即为CLI 的core.扩 ...
- Typescript 解构 、展开
什么是解构.展开? 展开与解构作用相反,简单来说: 解构:解构赋值允许你使用数组或对象字面量的语法,将数组和对象的属性付给各种变量. 展开:允许你讲一个数组展开为另一个数组,或一个对象展开为另一个对象 ...
- 【待整理】MySQL alter table modify vs alter table add产生state不一样
MySQL:5.6.35 OS:redhat5.8 今天更新数据库某些表字段,有如下两SQL: ①alter table xx modify xxxx;(表大概是77w) ②alter table s ...
- 605. Can Place Flowers种花问题【leetcode】
Suppose you have a long flowerbed in which some of the plots are planted and some are not. However, ...
- html5 mdn一些精彩的案例
https://developer.mozilla.org/zh_CN/docs/Games/Examples
- JUnit4在Eclipse中的使用
测试是项目开发中很重要的一环.实际上,建议的项目前期编写过程是:构思-> 编写单元测试代码-> 编写接口->编写实现类-> 测试实现类->编写主类....JUnit是一个 ...