springboot整合三 共享session,集成springsession

时间:2023-03-10 06:36:07
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=
spring.redis.host=127.0.0.1
spring.redis.port=
spring.redis.password=
# 连接池最大连接数
spring.redis.pool.max-active=
spring.redis.pool.max-wait=-
# 连接池中的最大空闲连接
spring.redis.pool.max-idle=
# 连接池中的最小空闲连接
spring.redis.pool.min-idle=
# 连接超时时间(毫秒)
spring.redis.timeout=
########################  若使用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= , 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.****.net/j3T9Z7H/article/details/80046307

深入理解参考

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