SpringBoot(三): 共享Session

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

那SpringBoot如何使用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 屬性不再生效。

好了,這樣就配置好了,我們來測試一下

3、測試

添加測試方法獲取 sessionid

@RequestMapping("/uid")
String uid(HttpSession session) {
    UUID uid = (UUID) session.getAttribute("uid");
    if (uid == null) {
        uid = UUID.randomUUID();
    }
    session.setAttribute("uid", uid);
    return session.getId();
}

登錄 Redis 輸入 keys '*sessions*'

t<spring:session:sessions:db031986-8ecc-48d6-b471-b137a3ed6bc4
t(spring:session:expirations:1472976480000

其中 1472976480000 爲失效時間,意思是這個時間後 Session 失效,db031986-8ecc-48d6-b471-b137a3ed6bc4 爲 sessionId,登錄 http://localhost:8080/uid 發現會一致,就說明 Session 已經在 Redis 裏面進行有效的管理了。

如何在兩臺或者多臺中共享 Session

其實就是按照上面的步驟在另一個項目中再次配置一次,啓動後自動就進行了 Session 共享。

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章