Springboot+redis實現session共享
- 2019 年 10 月 8 日
- 筆記
當多個應用做集群的時候,如何實現應用之間session共享。
解決辦法:
用一個容器保存 session,就能共享了。容器可以是資料庫,快取,文件等。當然這裡性能最高的還是
redis了。
實例程式碼:
pom文件中加入redis跟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>
在配置文件application.properties里配置
# Redis伺服器地址 spring.redis.host=localhost # Redis伺服器連接埠 spring.redis.port=6379 # Redis伺服器連接密碼(默認為空) spring.redis.password=
加上埠號
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支援
@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里。