springboot整合三 共享session,集成springsession


 官網介紹 - spring:session:https://docs.spring.io/spring-session/docs/current/reference/html5/

 

1. Mave依賴

        <!-- springboot - Redis -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-redis</artifactId>
        </dependency>
        <!--spring session 與redis應用基本環境配置,需要開啟redis后才可以使用,不然啟動Spring boot會報錯 -->
        <dependency>
            <groupId>org.springframework.session</groupId>
            <artifactId>spring-session-data-redis</artifactId>
        </dependency>

 

2. 參數配置

  2.1 redis 配置:

########################  application.properties ###################################

spring.redis.database
=1 spring.redis.host=127.0.0.1 spring.redis.port=6379 spring.redis.password= # 連接池最大連接數 spring.redis.pool.max-active=8 spring.redis.pool.max-wait=-1 # 連接池中的最大空閑連接 spring.redis.pool.max-idle=8 # 連接池中的最小空閑連接 spring.redis.pool.min-idle=0 # 連接超時時間(毫秒) spring.redis.timeout=0

########################  若使用yml文件,則如下配置 ###################################
spring
:
redis:
database: 1 port: 6379 host: ip password: pwd database: 1 timeout: 1s
#lettuce 是一個可以做緩沖池的插件,也可以不用,使用pool為三級參數,即spring.redis.pool... lettuce: pool: max-active: 8 max-idle: 8 min-idle: 0 max-wait: -1ms
 
        

  2.1 若使用yml文件,則如下配置

  

spring:
  session:
    store-type: redis
    #redis:
      #flush-mode: on_save
#添加后,redis中的key為spring:session:myproject #
namespace: myproject

 

3. 設置Redis支持的Spring Session

3.1 方案一  基於springboot配置

spring:
  session:
    store-type: redis
    redis:
      flush-mode: on_save
      #添加后,redis中的key為spring:session:myproject
      namespace: myproject

 

3.2 方案二 注解方式

package com.xmhx.cnlife.base.config;

import org.springframework.session.data.redis.RedisFlushMode;
import org.springframework.session.data.redis.config.annotation.web.http.EnableRedisHttpSession;

/**
 * session托管到redis
 *
 */
//使用springboot-session處理,單位:秒;
//RedisFlushMode有兩個參數:ON_SAVE(表示在response commit前刷新緩存),IMMEDIATE(表示只要有更新,就刷新緩存)
@EnableRedisHttpSession(maxInactiveIntervalInSeconds= 1800, redisFlushMode = RedisFlushMode.ON_SAVE, redisNamespace = "myproject") public class SessionConfig { }

 

4. 重要的異步:服務器時間同步

 如果看了文章開頭的原文解釋,就可以明白,springsession會拿服務器時間 跟 redis存儲的時間比對,看時間差是否超時、失效

 如果時間不同步,可能有些請求就會session失效,或者自己往session中存放的需手工確認失效的功能 會偶爾出錯;比如:短信驗證碼

 關於linux時間同步,請看文章:https://www.cnblogs.com/yingsong/p/9857591.html

 

 

 有關想了解存放在redis里的數據存儲結構,可查看此文:

https://blog.csdn.net/j3T9Z7H/article/details/80046307

深入理解參考

https://blog.csdn.net/koflance/article/details/66676859?utm_source=itdadao&utm_medium=referral

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM