springcloud如何共享session

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

驗證

  1. 登錄redis./redis-cli
  2. 認證存儲session
  3. 查看sessionkeys *
  4. 可以看到session信息以spring.session打頭的key存儲,規則應該可以通過配置修改(一般也沒必要改)
  5. 查看session有效期ttl
  6. 完美!
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章