zoukankan      html  css  js  c++  java
  • springboot-不同名称项目的 redis session共享

    引入JAR

    <dependency>
      <groupId>org.springframework.session</groupId>
      <artifactId>spring-session-data-redis</artifactId>
    </dependency>
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-data-redis</artifactId>
    </dependency>         

    配置session 启动以及配置超时

    import org.springframework.beans.factory.annotation.Value;
    import javax.annotation.PostConstruct;
    import java.time.Duration;
    import org.springframework.session.data.redis.config.annotation.web.http.EnableRedisHttpSession;
    import org.springframework.context.annotation.Configuration;
    import org.springframework.session.data.redis.config.annotation.web.http.RedisHttpSessionConfiguration;
    
    @Configuration
    @EnableRedisHttpSession
    public class RedisSessionConfig extends RedisHttpSessionConfiguration {
        @Value("${server.servlet.session.timeout}")
        private String  timeout;
    
        @PostConstruct
        public void   redisSessionConfig() {
        //Duration类型时间转成秒
            long seconds = Duration.parse(timeout).getSeconds();
            this.setMaxInactiveIntervalInSeconds((int) seconds);
        }
    }  

    注:

      @EnableRedisHttpSession 配置redis-session生效

        我配置的会话的timeout采用Duration格式的时间,也可以直接配置秒数字,自己处理就行。

    springboot session配置:

    spring:
        session:
            store-type: redis
        redis:
            host: localhost
            port: 6379
            timeout: 1000
            jedis:
                pool:
                    max-active: 100
                    max-wait: 10
                    max-idle: 10
                    min-idle: 10
            database: 0 

    springboot-server.servlet.session.cookie以及超时时间配置

    server:
      port: 8080
      servlet:
        context-path: /projectname
        session:
          timeout: PT30M
          cookie:
              http-only: false
              path: /
    

     注:server.servlet.session.timeout=PT30M 是springboot2+ 配置内存session管理的超时设置,redis配置这个沿用了此配置,放在哪里都可以,自己取用时候注意下就行。

       如果多项目公用session,且项目名不一样的情况,注意配置cookie的path,session的作用范围好像是这个。

  • 相关阅读:
    [置顶] 文件批量重命名(工具)
    zookeeper源码分析之三客户端发送请求流程
    java set转list,数组与list的转换
    分布式电子邮件系统设计--转载
    redis 模糊删除实现
    eclipse 使用jetty调试时,加依赖工程的源码调试方法
    社交产品后端架构设计--转载
    solr服务器的查询过程
    What is corresponding Cron expression to fire in every X seconds, where X > 60? --转载
    zookeeper源码分析之二客户端启动
  • 原文地址:https://www.cnblogs.com/feecy/p/12092245.html
Copyright © 2011-2022 走看看