springcloud如何共享session
前言
spring-session
整合
依賴
配置
有效期配置
驗證
前言
微服務時代下,很多的傳統項目開始轉型。那麼一定會面臨一個問題,微服務下的session如何管理?傳統項目下,我們的session完全由服務端管理,session存在服務端的內存中,不存在共享的問題。但是微服務模式下,所有服務分散在天南海北,傳統方式顯然解決不了共享問題,然而spring爲我們提供了完美的解決方案:spring-session
spring-session
spring-session支持我們將session信息持久化存儲,用戶認證中心(認證子服務整合spring-session)後將session存在數據庫(一般是redis)中,需要使用session的子服務同樣整合spring-session便可取出session使用。
整合
spring-session的整合及其簡單
<!-- spring session -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.session</groupId>
<artifactId>spring-session-data-redis</artifactId>
</dependency>
配置
yml文件增加配置:
spring:
session:
store-type: redis
redis:
database: 0
host: localhost
port: 6379
password:
tore-type即存儲介質,支持如圖選項
一般我們都是使用redis,其高速緩存和有效期的機制與session天然契合
然後。。就整合完了,存儲使用session的方法依舊
request.getSession().setAttribute("xxx", "xxx");
request.getSession().getAttribute("xxx");
如此,令人頭疼的session共享問題輕鬆解決,無需修改任何代碼,spring-session天下第一!!!
有效期配置
有效期通過
spring:
session:
timeout: 600
性配置,單位ms
驗證
- 登錄redis
./redis-cli
- 認證存儲session
- 查看session
keys *
- 可以看到session信息以spring.session打頭的key存儲,規則應該可以通過配置修改(一般也沒必要改)
- 查看session有效期
ttl
- 完美!