Centos7 minimal 系列之Redis共享sessionid(七)
阿新 • • 發佈:2018-01-04
image strings 系列 sha edi esp get blog 用戶
這一章節的內容就當看看,只是個人理解,我想應該是有誤的。
一、SessionId
sessionid是一個會話的key,瀏覽器第一次訪問服務器會在服務器端生成一個session,有一個sessionid和它對應。
二、問題和理解
在分布式中實現sessionid共享,自己胡亂琢磨。我這麽理解的,通過sessionid作為鍵,用戶信息或者其他信息為值,保存的redis中。
發現在nginx代理之後,每次的sessionid不需要做任何設置就是相同的。是不是訪問的代理地址?從而不需要做其他設置?、
在網上有說通過cookie保存sessionid,然後獲取sessionid和redis中做對比,沒有的情況做什麽,有的情況做什麽,但是負載均衡之後貌似都
不需要cookie來保存這個了。每次直接可以獲取到sesseionid而且還是一樣的。
HttpContext.Session.SessionID;
三、保存在redis中
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); }
Centos7 minimal 系列之Redis共享sessionid(七)