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