周六的时候用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的更多相关文章

  1. linux下实现redis共享session的tomcat集群

    为了实现主域名与子域名的下不同的产品间一次登录,到处访问的效果,因此采用rediss实现tomcat的集群效果.基于redis能够异步讲缓存内容固化到磁盘上,从而当服务器意外重启后,仍然能够让sess ...

  2. SpringBoot,Security4, redis共享session,分布式SESSION并发控制,同账号只能登录一次

    由于集成了spring session ,redis 共享session,导致SpringSecurity单节点的session并发控制失效, springSession 号称 无缝整合httpses ...

  3. Nginx+tomcat集群使用redis共享session

    一 :nginx负载均衡 当Tomcat当做独立的Servlet容器来运行时,可看做是能运行Java Servlet的独立Web服务器. 此外 Tomcat还可以作为其他Web服务器进程内或者进程外的 ...

  4. Tomcat7.0.99集群使用Redis共享session方案

    以前配置过给予多播的session共享方案,这回再配置一个redis共享session的. 先小小的炫耀一下: 相信大家要做Tomcat+Redis+session配置,遇到的头号麻烦就是编译的tom ...

  5. Spring Boot 使用 Redis 共享 Session 代码示例

    参考资料 博客:spring boot + redis 实现session共享 1. 新建 Maven 工程 我新建 spring-boot-session-redis maven 工程 2. 引入 ...

  6. 一篇文章让你深透理解cookie和session,附带分布式WEB系统redis共享session方案

    cookie和session有什么区别?这是一个很基础的知识点,大家可能都知道一个大概:cookie是存在客户端的,session是存储在服务端,cookie和session用来验证识别用户的登录状态 ...

  7. SpringBoot+Shiro+Redis共享Session入门小栗子

    在单机版的Springboot+Shiro的基础上,这次实现共享Session. 这里没有自己写RedisManager.SessionDAO.用的 crazycake 写的开源插件 pom.xml ...

  8. SpringBoot系列: Redis 共享Session

    Web项目Session管理是一个很重要的话题, 涉及到系统横向扩展, SpringBoot已经为共享Session很好的解决方案, 这篇文章关注使用Redis共享会话, 同时这也是最常用的方法. = ...

  9. 使用 Redis 共享 Session 会话

    储存模式 1.InProc模式 这是ASP.NET默认的Session管理模式,在应用进程内维护Session. 2.StateServer模式 这是在服务器装了.NET环境后自带的一个StateSe ...

随机推荐

  1. 14. leetcode 383. Ransom Note

    Given an arbitrary ransom note string and another string containing letters from all the magazines, ...

  2. Python Socket 简单聊天室2

    上篇文章写了一个简单的单线程的一问一答的简单聊天室.这次我们使用SocketServer模块搭建一个多线程异步的聊天室. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 ...

  3. InputStreamReader读取文件出现乱码

    当你读取一个文本文件时,如果是在电脑记事本上面写的,然后保存.使用InputStreamReader读取出来,并且是按照他的编码格式读取出来,发现还是存在乱码,比如文本内容是“你好”,读出来显示是“? ...

  4. NYOJ--65--另一种阶乘问题

    /* Name: NYOJ--65--另一种阶乘问题 Date: 17/04/17 16:35 Description: 去年刚开始做题时的代码看不下去了,再做,打表呗 */ #include< ...

  5. pip&easy_install使用

    pip install ... easy_install ... ******************************************************************* ...

  6. 使用OracleDBLink进行数据库之间对象的访问操作

    Oracle中自带了DBLink功能,它的作用是将多个oracle数据库逻辑上看成一个数据库,也就是说在一个数据库中可以操作另一个数据库中的对象,例如我们新建了一个数据database1,我们需要操作 ...

  7. UML类图几种关系的总结(网摘)

    Source link:http://www.open-open.com/lib/view/open1328059700311.html UML类图几种关系的总结 原文出处:[深度开源] 在UML类图 ...

  8. 再起航,我的学习笔记之JavaScript设计模式11(外观模式)

    经过一段时间的学习与分享,我们对创建型设计模式已经有了一定的认识,未来的一段时间里我们将展开新的篇章,开始迈入结构性设计模式的学习. 结构性设计模式与创建型设计模式不同,结构性设计模式更偏向于关注如何 ...

  9. 物体自由落体动态模拟(Linear Subspace)

    三维物体变形方法赋予了模拟物体的动态特性,但是随着物体模型的复杂度慢慢增加,对高质量的实时变形方法也提出了更高的要求.对于高精度的大型三维网格而言,通常会设计一个低精度的子网格,并构建子网格与原始网格 ...

  10. noip2016普及组 题解

    T1 大水题,不解释 上考场代码 #include <algorithm> #include <cstdio> using namespace std; int main() ...