1. 程式人生 > >Spring Boot Session共享2種方式

Spring Boot Session共享2種方式

 

 

教程 雲棲大會 Mysql 備案 文件 域名 whois查詢 PHP教程 備份 網際網路大學 雲教程

Spring Boot(21)分散式Session:為了使Web能適應大規模的訪問,需要實現應用程式的叢集部署 實現叢集部署首先要解決session的統一,即需要實現session的共享機制,即分散式Session。

分散式Session的實現方式

基於resin/tomcat web容器本身的session複製機制 基於NFS共享檔案系統 基於Cookie進行session共享 基於資料庫的Session共享 基於分散式快取的Session共享,如memcached,Redis,jbosscache 基於ZooKeeper的Session共享

下面程式碼將演示基於Spring Session的實現,這個是基於Redis快取的Session共享。

方案1

如果配置的Redis的是自己在維護,那很方便就可以實現了。

Spring Session官方文件

http://docs.spring.io/spring-session/docs/current/reference/html5/guides/boot.html

新增依賴

只需要在pom檔案新增以下依賴

org.springframework.boot

spring-boot-starter-redis

org.springframework.session

spring-session

啟動類新增@EnableRedisHttpSession註解

配置檔案application.properties

spring.redis.host=localhost

spring.redis.port=6379

server.session.timeout=36000

Spring Boot會自動把session從檔案儲存方式切換到Redis方式,根本不需要再做任何配置。

方案2

如果配置的Redis的不是自己在維護,不能夠更改它的配置(如應用程式部署在阿里雲,同時使用阿里雲的Redis資料庫),那就有點麻煩了。

額外功能

因為方案1需要Redis的一個功能:

notify-keyspace-events

預設情況下,這個功能是不開啟的。

開啟額外功能

如果你要使用方案1,你就必須通過下面的命令,來讓你的Reids開啟這個功能。

redis-cli config set notify-keyspace-events Egx

那就必須新建如下RedisSessionConfig類,即可在不改變Redis配置的前提下使用Redis來儲存Session了。 ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37