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里。