C# redis 分布式session存储

时间:2022-03-28 13:52:41

https://github.com/uliian/SessionExtentionStore

一个基于Redis的Session存储扩展方案,解决ASP.NET中Session的局限性和跨应用程序使用的局限性
 branch: master 

README.md

SessionExtentionStore

一个基于Redis的Session存储扩展方案,解决ASP.NET中Session的局限性和跨应用程序使用的局限性

原生的Session解决方案存在着跨应用程序的困难,扩展性的困难,而SessionExtentionStore方案致力于解决这个问题。 这是一个简单的处理方案,使用了这个解决方案,您能将多个应用间数据交互交由SessionExtentionStore解决, 在使用共享Session提供SSO的解决方案中,尤其有用。

我采用的是类Session的处理方式,和SessionId绑定到了一起,这样就能依赖于Session的机制将用户和扩展绑定到了一起。

使用方法: 配置web.config,增加以下配置节点:

 <system.web>
<httpModules>
<add name="SessionExtentionStore" type="SessionExtentionStore.UpdateTTL"/>
</httpModules>
<system.web> <appSettings>
<add key="SessionExtention" value="127.0.0.1"/>
</appSettings>

要是MVC环境,则建立一个Controller父类,派生自Controller类,若是WebForm则建立一个父类派生自System.Web.UI.Page, 父类加入以下属性定义:

        private StoreContainer _store;
public StoreContainer Store
{
get
{
if (!string.IsNullOrEmpty(Session.SessionID))
{
Session["__TempCreate__"] = 1;
return new StoreContainer(Session.SessionID);
}
return _store ?? (_store = new StoreContainer(Session.SessionID));
}
}

其他所有页面都派生自这两个父类,然后均可以使用Store属性进行数据存储,与使用Session的方式一样。 因为存储内容当中带有类型信息,若带有非mscorlib带有的的数据类型需要在多应用程序间共享,需要在子类中使用 Store.GetJson(string key)或者GetValue(string key)方法。

我的第一个可以使用的开源项目,我在我所负责的项目中已经开始使用,希望有能看到的朋友给予支持,提出宝贵意见。谢谢!

C# redis 分布式session存储的更多相关文章

  1. &lbrack;2014-02-23&rsqb;Asp&period;net Mvc分布式Session存储方案

    要玩集群的时候,怎么处理会话状态Session? InProc模式的sessionState是不能用了,因为这是在web服务器本机进程里的,会造成各节点数据不一致.除非在分流的时候用ip hash策略 ...

  2. 自定义Redis作为Session存储服务提供

    之前看网上介绍可使用Redis自定义Session托管,使用第三方的Harbour.RedisSessionStateStore GitHub:https://github.com/TheCloudl ...

  3. Redis 分布式session

    这里有三种和方式实现: 1.Harbour.RedisSessionStateStore , ServiceStack.Redis 配置web.config <sessionState mode ...

  4. redis&sol;分布式文件存储系统&sol;数据库 存储session,解决负载均衡集群中session不一致问题

    先来说下session和cookie的异同 session和cookie不仅仅是一个存放在服务器端,一个存放在客户端那么笼统 session虽然存放在服务器端,但是也需要和客户端相互匹配,试想一个浏览 ...

  5. Spring Boot 应用使用spring session&plus;redis启用分布式session后,如何在配置文件里设置应用的cookiename、session超时时间、redis存储的namespace

    现状 项目在使用Spring Cloud搭建微服务框架,其中分布式session采用spring session+redis 模式 需求 希望可以在配置文件(application.yml)里设置应用 ...

  6. 分布式中Redis实现Session终结篇

    上一篇使用Redis实现Session共享方式虽然可行,但是实际操作起来却很麻烦,现有代码已经是这个样子了,总不可能全部换掉吧!好吧,这是个很实际的问题,那么能不能实现无侵入式的分布式Session共 ...

  7. &lbrack;Node&period;js&rsqb; Node &plus; Redis 实现分布式Session方案

    原文地址: http://www.moye.me/?p=565 Session是什么? Session 是面向连接的状态信息,是对 Http 无状态协议的补充. Session 怎么工作? Sessi ...

  8. 实现Asp&period;net Mvc分布式Session Redis群集

    Redis群集实现Asp.net Mvc分布式Session Session的缺点 众所周知Asp.net Session默认存储在IIS中,IIS的重启会导致Session丢失. 如果你的网站使用了 ...

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

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

随机推荐

  1. 对偶图 &amp&semi;&amp&semi; 【BZOJ】1001&colon; &lbrack;BeiJing2006&rsqb;狼抓兔子(对偶图&plus;最短路)

    http://www.lydsy.com/JudgeOnline/problem.php?id=1001 可谓惨不忍睹,一下午就在调这题了. 很久以前看到这题是一眼最大流,看到n<=1000,我 ...

  2. 浏览器开发 IE webkit chrome浏览器定制

    FAQ:制作自己的浏览器有何意义?1.浏览器按照您的需求命名,可自定义LOGO,对您的产品或者公司都有推广作用.2.在帮助一栏的主页以及软件安装的网页链接都可以设为您网站的链接. 3.可将首页设置为您 ...

  3. Python番外 事务 那些事

    Transaction 也就是所谓的事务了,通俗理解就是一件事情.从小,父母就教育我们,做事情要有始有终,不能半途而废. 事务也是这样,不能做一般就不做了,要么做完,要么就不做.也就是说,事务必须是一 ...

  4. IE6下绝对定位元素和浮动元素并列绝对定位元素消失

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...

  5. Windows系统还原失败心得

    最近我的Windows10连续几天出现了蓝屏,怀疑是某软件的Bug造成的,于是想用系统还原功能回到前一段时间,我找到了那款软件安装的时间. 到了选择还原点界面,发现有5个还原点,最旧的一个刚好就是那款 ...

  6. vue中的数据监听以及数据交互

    现在我们来看一下vue中的数据监听事件$watch, js代码: new Vue({ el:"#div", data:{ arr:[,,] } }).$watch("ar ...

  7. MinerConstanits&period;java 常量类

    MinerConstanits.java 常量类 package com.iteye.injavawetrust.miner; /** * 常量类 * @author InJavaWeTrust * ...

  8. Two kinds of item classification model architecture

    Introduction: Introduction to Fusing-Probability model: Cause the input has two parts, one is item i ...

  9. 深入 kernel panic 流程【转】

    一.前言 我们在项目开发过程中,很多时候会出现由于某种原因经常会导致手机系统死机重启的情况(重启分Android重启跟kernel重启,而我们这里只讨论kernel重启也就是 kernel panic ...

  10. OO第一单元作业

    第一次作业 类图:   复杂度: 圈复杂度的问题一直困扰着这三次作业,主要体现在求导方法中先判断符号导致出现过多判断语句,应该将整理符号放在一个新的类中处理. 第一次作业由于对面向对象的思维有些不理解 ...