共享Session

分佈式系統中,Session 共享有不少的解決方案,其中託管到緩存中應該是最經常使用的方案之一。redis

spring官方說明:spring

Spring Session 提供了一套建立和管理 Servlet HttpSession 的方案。Spring Session 提供了集羣 Session(Clustered Sessions)功能,默認採用外置的 Redis 來存儲 Session 數據,以此來解決 Session 共享的問題。緩存

1.引入依賴

<!-- 共享session設置 -->
		<dependency>
			<groupId>org.springframework.session</groupId>
			<artifactId>spring-session-data-redis</artifactId>
		</dependency>

2.session配置

@Configuration
@EnableRedisHttpSession(maxInactiveIntervalInSeconds=86400*30) //設置session失效時間
public class SessionConfig {

}

maxInactiveIntervalInSeconds: 設置 Session 失效時間,使用 Redis Session 以後,原 Spring Boot 的 server.session.timeout 屬性再也不生效。session

3.session測試

@RequestMapping(value = "/sessionId")
	public String sessionId(HttpSession session) {
		//session操做
		String userName = (String) session.getAttribute("userName");
		if (userName == null) {
			userName = "jiafeng";
		}
		session.setAttribute("userName", userName);
		
		
		return session.getId();
	}

執行請求以後發現頁面獲取的session和redis中存儲的session一致,說明session已經歸入redis管理。app

redis中存儲session和session失效時間。分佈式

相關文章
相關標籤/搜索