SpringBoot springsession redis

createh510小时前技术教程1

背景

正常情况下,我们前端一般会用nginx做负载均衡横向扩展,有时候我们会选择IP绑定负载均衡策略,但是很多情况下,我们每个节点可能资源不同,所以能够承受的用户访问量也不同,那么采用权重轮询的负载均衡策略可能会更加有效,这种情况下,我们的后台session就不能放在每个节点了,需要进行共享,我们可以放在数据库或者redis中,通常情况下我们会选择redis,下面介绍用SpringBoot整合spring session+redis。

整合spring session +redis

整合起来其实很简单,如下几步即可。

1、引入依赖

<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>

2、配置文件

spring: 
  #redis集群
  redis:
    port: 6379
    host: 192.168.157.6
    password: 123456
    pool: 
      max-active: 8
      max-wait: -1
      max-idle: 8
      min-idle: 0
  session:
    store-type: redis # Session store type.

如果是集群模式,则需要用集群模式的redis配置文件

spring:
  #redis集群
  redis:
    database: 0
    jedis:
      pool:
        max-active: 8
        max-wait: -1
        max-idle: 8
        min-idle: 0
      timeout: 10000
      cluster:
        nodes:
          - 127.0.0.1:6379
  session:
    store-type: redis # Session store type.

3、启动类加上注解

@EnableRedisHttpSession(maxInactiveIntervalInSeconds = 3600)
@SpringBootApplication
public class App {
    public static void main(String[] args) {
        SpringApplication.run(App.class, args);
    }
}

设置3600s过期

测试

请求然后发现redis有如下key

spring:session:expirations:1617380520000
spring:session:sessions:7f22b339-52d2-47dd-8538-64e1eecdbd36
spring:session:sessions:expires:7f22b339-52d2-47dd-8538-64e1eecdbd36

并且客户端一直用的是同一个sessionid

完成!



相关文章

SpringBoot如何用Session共享实现分布式部署?

推荐学习最全SpringBoot学习教程,GitHub上20K+star,帮你解决95%的问题 肝了十天半月,献上纯手绘“Spring/Cloud/Boot/MVC”全家桶脑图 在单体项目中,我们将用...

一招制胜---详解分布式系统里session同步

几周前,有个盆友问老王,说现在有多台服务器,怎么样来解决这些服务器间的session同步问题?老王一下就来精神了,因为在n年以前,老王还在学校和几个同学一起所谓创业的时候,也遇到了类似的问题。当时查了...

会话粘连(Session Affinity)技术方案列表

会话粘连(Session Affinity)的主要技术方案分类及典型实现:一、基于负载均衡器的会话粘连1.IP 哈希(IP Hash)原理:根据客户端 IP 地址计算哈希值,映射到固定后端服务器优点:...

Nginx负载均衡中对session处理分析一

最近讲解了几节关于负载均衡的文章,我们中间使用了nginx负责转发服务器,负责管理后端服务器的事情,不过有些人可能会注意到,应用服务器的session是如何处理的,我们可不可以使用nginx来管理呢?...

Cookie 和 Session 到底有什么区别?

曾经问过很多同学这个问题:Cookie 和 Session 有什么区别呢?大部分的面试者应该都可以说上一两句,比如:什么是 Cookie?什么是 Session?两者的区别等。但如果再往深入探讨的话,...

单体应用到分布式再到微服务,用户认证和授权机制的演进史

Web应用和用户的身份验证息息相关,从单一服务器架构到分布式服务架构再到微服务架构,用户安全认证和授权的机制也一直在演进,下文对各个架构下的认证机制做个总结。单一服务器架构该架构下后端只有一台服务器提...