Session是我们常用的状态保持的对象,它通常会生成一个唯一的SessionId以Cookie的方式存在浏览器端,而Session本身会保存在服务器端。
虽说我们用Session很方便的实现状态保持,但是Session也带来了很多弊端,下面我们一步一步来分析Session的一些弊端以及用什么方式去改变它:
1.因为网站会因为各种原因重启,照成数据丢失,在线用户全部下线。
2.Session保存的东西越来越多,占用服务器内存也就越来越大,服务器内存压力也会越来越大。
3.Session存在服务器内存中,不能在多台服务器之间共享,扩展性收到了影响。
-----解决方案:model="SQLServer"或者model="StateServer"...
二、当model="SQLServer"或者model="StateServer"时:
先创建一个主窗体,三个父窗体,我注册了HttpModule来看一下执行的流程,Test_2页面线程睡眠5秒...
然后我在主窗体后台类中使用了Session Session["test"]="test"; 会发现Test_3被阻塞了...
解决方案:使用分布式缓存,最近有很多比较火热的分布式缓存系统,如:Memcached、Redis...
因为Redis可以实现数据持久化,支持多重数据类型,可能应用场景更广泛一些,所以之前用了Redis,这次就那Redis来做例子,不过其他的实现方式也一样一样了...
Session——SessionId{Dictionary<string,Object>}
SessionId{Dictionary<string,Object>}
SessionId{Dictionary<string,Object>}
这是自己对Redis的一个扩展Session,不知道是否算优,欢迎大牛拍砖纠正;
联系客服