真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網站制作重慶分公司

利用SpringSession和redis對Session進行共享詳解-創(chuàng)新互聯(lián)

前言

創(chuàng)新互聯(lián)建站作為成都網站建設公司,專注成都網站建設、網站設計,有關成都定制網站方案、改版、費用等問題,行業(yè)涉及成都效果圖設計等多個領域,已為上千家企業(yè)服務,得到了客戶的尊重與認可。

我們在搭建完集群環(huán)境后,不得不考慮的一個問題就是用戶訪問產生的session如何處理。


session的處理有很多種方法,詳情見轉載的上篇博客:集群/分布式環(huán)境下5種session處理策略


在這里我們討論其中的第三種方法:session共享。

redis集群做主從復制,利用redis數據庫的最終一致性,將session信息存入redis中。當應用服務器發(fā)現session不在本機內存的時候,就去redis數據庫中查找,因為redis數據庫是獨立于應用服務器的數據庫,所以可以做到session的共享和高可用。

不足:

1.redis需要內存較大,否則會出現用戶session從Cache中被清除。


2.需要定期的刷新緩存

初步結構如下:


但是這個結構仍然存在問題,redis master是一個重要瓶頸,如果master崩潰的時候,但是redis不會主動的進行master切換,這時session服務中斷。

但是我們先做到這個結構,后面再進行優(yōu)化修改。

Spring Boot提供了Spring Session來完成session共享。

官方文檔:http://docs.spring.io/spring-session/docs/current/reference/html5/guides/boot.html#boot-sample

首先創(chuàng)建簡單的Controller:

@Controller 
public class UserController { 
 
 @RequestMapping(value="/main", method=RequestMethod.GET) 
 public String main(HttpServletRequest request) { 
 HttpSession session = request.getSession(); 
 String sessionId = (String) session.getAttribute("sessionId"); 
 if (null != sessionId) { // sessionId不為空 
 System.out.println("main sessionId:" + sessionId); 
 return "main"; 
 } else { // sessionId為空 
 return "redirect:/login"; 
 } 
 } 
 
 
 @RequestMapping(value="/login", method=RequestMethod.GET) 
 public String login() { 
 return "login"; 
 } 
 
 @RequestMapping(value="/doLogin", method=RequestMethod.POST) 
 public String doLogin(HttpServletRequest request) { 
 System.out.println("I do real login here"); 
 HttpSession session = request.getSession(); 
 String sessionId = UUID.randomUUID().toString(); 
 session.setAttribute("sessionId", sessionId); 
 System.out.println("login sessionId:" + sessionId); 
 return "redirect:/main"; 
 } 
} 

分享題目:利用SpringSession和redis對Session進行共享詳解-創(chuàng)新互聯(lián)
文章網址:http://weahome.cn/article/dgesjs.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部