當多個應用作集羣的時候,如何實現應用之間session共享。redis
解決辦法:spring
用一個容器保存 session,就能共享了。容器能夠是數據庫,緩存,文件等。固然這裏性能最高的仍是 數據庫
redis了。緩存
實例代碼:服務器
pom文件中加入redis跟sessionsession
<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>
在配置文件application.properties裏配置app
# Redis服務器地址 spring.redis.host=localhost # Redis服務器鏈接端口 spring.redis.port=6379 # Redis服務器鏈接密碼(默認爲空) spring.redis.password=
加上端口號spring-boot
server.port=8080
定義一個Controller性能
@GetMapping("get") public Map<String,String> getSession(HttpServletRequest request){ HashMap<String,String>map=new HashMap<String, String>(); map.put("sessionId",request.getSession().getId()); return map; }
啓動app類加上@EnableRedisHttpSession 開啓spring session支持server
@SpringBootApplication @EnableRedisHttpSession public class DemoApplication { public static void main(String[] args) { SpringApplication.run(DemoApplication.class, args); } }
啓動第二個項目就是改項目的端口
首先訪問8080端口的設置session
最後,再訪問8081端口的sessions
可見,8080與8081兩個服務器返回結果同樣,實現了session的共享
這個時候打開redis客戶端,能夠查詢到session信息已經保存在redis裏。