Centos7 minimal 系列之Redis共享sessionid(七)
这一章节的内容就当看看,只是个人理解,我想应该是有误的。
一、SessionId
sessionid是一个会话的key,浏览器第一次访问服务器会在服务器端生成一个session,有一个sessionid和它对应。
二、问题和理解
在分布式中实现sessionid共享,自己胡乱琢磨。我这么理解的,通过sessionid作为键,用户信息或者其他信息为值,保存的redis中。
发现在nginx代理之后,每次的sessionid不需要做任何设置就是相同的。是不是访问的代理地址?从而不需要做其他设置?、
在网上有说通过cookie保存sessionid,然后获取sessionid和redis中做对比,没有的情况做什么,有的情况做什么,但是负载均衡之后貌似都
不需要cookie来保存这个了。每次直接可以获取到sesseionid而且还是一样的。
HttpContext.Session.SessionID;
三、保存在redis中
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | public ActionResult Index() { ViewBag.ss = HttpContext.Session.SessionID; RedisManager redis = new RedisManager(); TimeSpan ts0 = new TimeSpan(0, 0, 50); redis.StringSet(HttpContext.Session.SessionID, "dirk" , ts0); ViewBag.sss = redis.StringGet(HttpContext.Session.SessionID); return View(); } public IDatabase getRedisContext() { ConnectionMultiplexer redis = ConnectionMultiplexer.Connect( "168.33.162.245:7001,168.33.162.245:7001,168.33.162.245:7002,168.33.162.245:7003,168.33.162.245:7004,168.33.162.245:7005,168.33.162.245:7006" ); IDatabase db = redis.GetDatabase(); return db; } public void StringSet( string key, string value, TimeSpan timeout) { IDatabase db = getRedisContext(); bool res = db.StringSet(key, value, timeout); } |
本文作者:WangJunZzz
本文链接:https://www.cnblogs.com/WangJunZzz/p/8193540.html
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
分类:
Linux
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步