1. 程式人生 > 程式設計 >Spring session整合到Redis過程解析

Spring session整合到Redis過程解析

為何要用Spring-session

在傳統單機web應用中,一般使用tomcat/jetty等web容器時,使用者的session都是由容器管理。瀏覽器使用cookie中記錄sessionId,容器根據sessionId判斷使用者是否存在會話session。這裡的限制是,session儲存在web容器中,被單臺伺服器容器管理。

但是網站主鍵演變,分散式應用和叢集是趨勢(提高效能)。此時使用者的請求可能被負載分發至不同的伺服器,此時傳統的web容器管理使用者會話session的方式即行不通。除非叢集或者分散式web應用能夠共享session,儘管tomcat等支援這樣做。但是這樣存在以下兩點問題:

需要侵入web容器,提高問題的複雜

web容器之間共享session,叢集機器之間勢必要互動耦合

有了spring-session之後,我們可以將session儲存到Redis、Mongodb等nosql資料庫。這樣就避免了單點快取的限制。

Let's do it

1.引入jar包

<dependency>
  <groupId>org.springframework.session</groupId>
  <artifactId>spring-session-data-redis</artifactId>
</dependency>
<dependency>
  <groupId>redis.clients</groupId>
  <artifactId>jedis</artifactId>
  <version>2.9.0</version>
</dependency>

2、在application.properties中加入如下配置檔案

#設定session儲存格式為redis
spring.session.store-type=redis
server.servlet.session.timeout=3600
#session更新策略,有ON_SAVE、IMMEDIATE,前者是在呼叫#SessionRepository#save(org.springframework.session.Session)時,在response commit前重新整理快取,#後者是隻要有任何更新就會重新整理快取
spring.session.redis.flush-mode=on-save
spring.session.redis.namespace=spring:session
#redis配置
spring.redis.database=0
spring.redis.host=10.34.51.234
spring.redis.password=123456
spring.redis.pool.max-active=8
spring.redis.pool.max-idle=8
spring.redis.pool.max-wait=-1
spring.redis.pool.min-idle=0
spring.redis.port=6379

3、配置redis伺服器

(略)

4、編寫SpringBoot程式

5、執行登入一下吧

可以看到檢視到了session資訊

6、未完成序列化操作。不過我感覺也沒必要完成序列化操作吧~

結束!

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支援我們。