zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    Codeforces 992C(数学)
    Codeforces 990C (思维)
    Codeforces 989C (构造)
    POJ 1511 Invitation Cards(链式前向星,dij,反向建边)
    Codeforces 1335E2 Three Blocks Palindrome (hard version)(暴力)
    POJ 3273 Monthly Expense(二分)
    POJ 2566 Bound Found(尺取前缀和)
    POJ 1321 棋盘问题(dfs)
    HDU 1506 Largest Rectangle in a Histogram(单调栈)
    POJ 2823 Sliding Window(单调队列)
  • 原文地址:https://www.cnblogs.com/yingsong/p/9838198.html
Copyright © 2011-2022 走看看