• 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

  • 相关阅读:
    Django同步数据库(/manage.py makemigrations) 报错
    python中global和nonlocal用法的详细说明
    linux系统下载pycharm
    第一次博客作业
    结对编程作业
    团队介绍与选题报告
    FTP的时间为什么比系统时间晚了八个小时?
    新的部落格
    Enter键提交表单
    Android动画RotateAnimation(fromDegrees, toDegrees, pivotX,pivotY)参数
  • 原文地址:https://www.cnblogs.com/yingsong/p/9838198.html
Copyright © 2020-2023  润新知