返回

Springboot整合Redis 集成springsession共享session

发布时间:2023-02-05 14:01:24 400
# html# spring# springboot# java# redis

 官网介绍 - spring:session:https://docs.spring.io/spring-session/docs/current/reference/html5/

1、Mave依赖

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.1.10.RELEASE</version>
    <relativePath/> <!-- lookup parent from repository -->
</parent>
 
<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>

<!-- 高版本redis的lettuce需要commons-pool2 -->
<dependency>
    <groupId>org.apache.commons</groupId>
    <artifactId>commons-pool2</artifactId>
    <version>2.7.0</version>
</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: 0
    host: 127.0.0.1
    jedis:
      pool:
        #最大连接数据库连接数,设 0 为没有限制
        max-active: 8
        #最大等待连接中的数量,设 0 为没有限制
        max-idle: 8
        #最大建立连接等待时间。如果超过此时间将接到异常。设为-1表示无限制。
        max-wait: -1ms
        #最小等待连接中的数量,设 0 为没有限制
        min-idle: 0
    #lettuce 是一个可以做缓冲池的插件,也可以不用,使用pool为三级参数,即
    lettuce:
      pool:
        max-active: 8
        max-idle: 8
        max-wait: -1ms
        min-idle: 0
      shutdown-timeout: 100ms
    password:
    port: 6379

3、设置Redis支持的Spring Session

3.1 方案一  基于springboot配置

server:
  port: 9090
  servlet:
    session:
      #配置session的有效时间为30天
      timeout: 2592000
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

参考: springboot整合三 共享session,集成springsession

SpringBoot2.0整合redis

特别声明:以上内容(图片及文字)均为互联网收集或者用户上传发布,本站仅提供信息存储服务!如有侵权或有涉及法律问题请联系我们。
举报
评论区(0)
按点赞数排序
用户头像
精选文章
thumb 中国研究员首次曝光美国国安局顶级后门—“方程式组织”
thumb 俄乌线上战争,网络攻击弥漫着数字硝烟
thumb 从网络安全角度了解俄罗斯入侵乌克兰的相关事件时间线
下一篇
场景编程集锦 - 考试打假 2023-02-05 13:54:07