.Net分布式架构(二):基于Redis的Session共享
一:Session简介
Session是什么呢?简单来说就是服务器给客户端的一个编号。当一台web服务器运行时,可能有若干个用户浏览正在运正在这台服务器上的网站。当每个用户首次与这台web服务器建立连接时,他就与这个服务器建立了一个Session,同时服务器会自动为其分配一个SessionID,用以标识这个用户的唯一身份。这个SessionID是由web服务器随机产生的一个由24个字符组成的字符串,我们会在下面的实验中见到它的实际样子。
二:Asp.Net中Session的集中模式和配置
(1):InProc,Session存储在进程内,这也是ASP.Net中的存储方式,也是默认值
(2): StateServer,Session存储在独立的状态服务即ASP.NET State Service中
(3):SQLServer,Session存储在SQL Server数据库中
(4):Custom,自定义保存方式,可以保存在Oracle、SQLServer、MongoDb、Redis中
本片文章主要讲述Session在Redis中的存储和共享
三:基于Redis的Session Provider配置
(1)分别对站点A和B的HomeController做如下更改,如下图所示,增加了创建Session和获取Session功能
分别对应的View视图
(2)RedisProvider配置:Microsoft.Web.RedisSessionStateProvider
用Nuget安装Microsoft.Web.RedisSessionStateProvider,如下图:
修改配置文件:
Redis的安装请参见:《Redis在Linux环境上的安装和启动》
四:负载均衡Session测试
(1)浏览器中输入:http://192.168.152.128/ 创建Session
(2)浏览器中输入:http://192.168.152.128/home/getsessionvalue, 打开两个Tab,一定要在同一个浏览器窗口中打开,否则SessionID肯定是不一样
从图中可以看到站点A共享站点B创建的Session。
从redis中也可以看出刚刚创建的Session,如下图
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· 展开说说关于C#中ORM框架的用法!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?