SpringBoot 分布式Session

简介

现在随着分布式,微服务架构的日益成熟,越来越多的企业将传统的单体服务改造为微服务或是分布式架构,在分布式中就遇到session管理的问题,微服务架构中一个服务为了实现高可用至少要布署两台机器,这样就遇到一个问题,就是这个部署在不同服务器上的三个点如何实现session共享。spring提供了分布式session共享集成方案,主要是原理是将session信息存储于redis中,从而实现所有的节点共享session。

添加依赖

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

配置

application.yml文件中添加redissession相关的配置项

spring:
  redis: # 配置REDIS 信息
    host: 127.0.0.1  # 配置 redis host
    port: 6379  # 配置 redis 端口
    lettuce:  # 配置 lettuce 连接池
      pool:
        max-active: 10  # 最大连接数
        max-idle: 10   # 连接池最大空闲连接
        min-idle: 4   # 连接池最小空闲连接

  session:
    store-type: redis   # 存储使用redis
    timeout: 3600s

在启动类中添加@EnableRedisHttpSession标注开启session

@SpringBootApplication
@EnableRedisHttpSession //主类开启EnableRedisHttpSession注解
public class SessiondemoApplication {

    public static void main(String[] args) {
        SpringApplication.run(SessiondemoApplication.class, args);
    }

}

测试

新建SessionController类,进行设置与获取Session信息,如下:

@RestController
@RequestMapping("/session")
public class SessionController {

    @GetMapping("set")
    public String set(HttpServletRequest request){
        request.getSession().setAttribute("message", "123456");
        return "success";
    }

    @GetMapping("get")
    public String get(HttpServletRequest request){
        return (String) request.getSession().getAttribute("message");
    }
}

原创文章,作者:jiafegn,如若转载,请注明出处:https://www.techlearn.cn/archives/629

Previous 2023年4月30日
Next 2023年12月17日

相关推荐

  • Springboot 注解 @Primary

    作用 在注入依赖的过程中,当有多个候选者的时候,可以指定哪个候选者为主要的候选者。可以用在类上或者方法上面。通常定义bean常见的有2种方式:1、在类上标注@Component注解…

    springboot 2022年9月26日
    239
  • SpringBoot 整合SpringSecurity认证

    简介 Spring Security 是Spring家族中的一个安全管理框架。相比与另外一个安全框架shiro,它提供了更丰富的功能,社区资源也比Shiro丰富。 —般Web应用的…

    2023年12月31日
    424
  • SpringBoot 整合Druid数据源

    简介 Druid是阿里巴巴开源的数据库连接池,号称是Java语言中最好的数据库连接池,能够提供强大的监控和扩展功能。 优点 引入依赖 这里使用的是SpringBoot整合版的Dru…

    2023年3月26日
    169
  • SpringBoot 缓存

    简介 缓存主要是为了提高数据的读取速度。 因为服务器和应用客户端之间存在着流量的瓶颈,所以读取大容量数据时,使用缓存来直接为客户端服务,可以减少客户端与服务器端的数据交互,从而大大…

    springboot 2023年4月23日
    133
  • SpringBoot 整合RocketMQ

    简介 使用RocketMQ有两种方式,一种是引入rocketmq-client需要自己创建生产者和消费者,相对来说比较繁琐;另一种是引入rocketmq-spring-boot-s…

    springboot 2023年4月30日
    312
  • Springboot 注解 @DependsOn

    作用 @DependsOn用来指定当前bean依赖的bean,spring在创建bean的时候,如果bean之间没有依赖关系,那么spring容器很难保证bean实例创建的顺 序,…

    springboot 2022年9月1日
    368
  • SpringBoot 定时器

    spring提供了@Scheduled和@EnableScheduling两个注解用来快速开发定时器,使用很简单 用法: 1、Springboot的启动类中加上@EnableSch…

    springboot 2023年4月23日
    136
  • SpringBoot自定义注解与使用

    简介 注解是一种能添加到Java代码中的元数据,方法,类,参数与包都可以使用注解进行修饰,可以将注解看为一种特殊的标记,在Java编译或运行过程中将有这种特殊标记的部分进行特殊处理…

    springboot 2024年1月25日
    255
  • SpringBoot 缓存 – jetcache

    简介 JetCache是一个基于Java的缓存系统封装,提供统一的API和强大的注解来简化缓存的使用。原生支持TTL、两级缓存、分布式自动刷新,还提供了Cache接口用于手工缓存操…

    springboot 2023年4月23日
    337
  • SpringBoot 单元测试

    简介 Spring Boot 2.2.0 版本开始引入 JUnit 5 作为单元测试默认库,在 Spring Boot 2.2.0 版本之前,spring-boot-starter…

    springboot 2023年4月2日
    242