[Java][SpringBoot]集成Redis实现Session共享

本文介绍了如何在SpringBoot应用中集成Redis实现Session共享,以解决应用集群部署(或分布式部署)时的Session共享问题。

1 添加相关Maven依赖

xml 复制代码
<!-- redis -->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
<!-- lettuce redis连接池需引入commons-pool2 -->
<dependency>
    <groupId>org.apache.commons</groupId>
    <artifactId>commons-pool2</artifactId>
</dependency>

<!-- spring session redis 用于实现session共享 -->
<dependency>
    <groupId>org.springframework.session</groupId>
    <artifactId>spring-session-data-redis</artifactId>
</dependency>

2 添加Redis配置

如应用已集成redis,可跳过此步骤。

application.properties配置文件中添加redis配置: (本文redis为集群部署,可根据自身redis进行配置)

properties 复制代码
# redis密码
spring.redis.password=redis@password123
# 集群节点
spring.redis.cluster.nodes=7.201.11.221:6379,7.201.11.222:6379,7.201.11.223:6379,7.201.11.224:6379,7.201.11.225:6379,7.201.11.226:6379
spring.redis.cluster.max-redirects=3
# 集群拓扑自适应刷新
spring.redis.lettuce.cluster.refresh.adaptive=true
# 集群拓扑定时刷新周期,单位:毫秒
spring.redis.lettuce.cluster.refresh.period=30000
# 开启连接池
spring.redis.lettuce.pool.enabled=true

3 启用RedisHttpSession

在Spring Boot的启动类上添加@EnableRedisHttpSession注解,以启用Redis接管Session。

java 复制代码
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.session.data.redis.config.annotation.web.http.EnableRedisHttpSession;

@SpringBootApplication
// 启用Redis接管Session,maxInactiveIntervalInSeconds设置session过期时间
@EnableRedisHttpSession(maxInactiveIntervalInSeconds = 3600 * 24 * 7)
public class Application {
    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }
}

4 Session过期时间配置

@EnableRedisHttpSession注解中的maxInactiveIntervalInSeconds属性用于配置Session过期时间,单位为秒。

@EnableRedisHttpSession(maxInactiveIntervalInSeconds = 3600 * 24 * 7)代表过期时间为7天。

注意:启用RedisHttpSession后,原有的session超时配置server.servlet.session.timeout会失效(被@EnableRedisHttpSession的配置覆盖)

A 参考内容

相关推荐
摇滚侠9 小时前
《Spring Boot 3:高级与架构设计》第 2 章 IOC容器的高级机制 BeanFactoryPostProcessor 个人理解 6
java·spring boot·笔记·后端
行百里er9 小时前
5 分钟跑起 Redis(Docker 版)
redis·后端·docker
程序员阿鹏9 小时前
简单介绍一下软引用
java·开发语言·jvm·数据结构·后端
SL_staff9 小时前
项目延期时如何用四类角色机制实现责任锚定?一线技术实践拆解
java·低代码·团队管理
福大大架构师每日一题10 小时前
redis 8.10.2发布:安全修复集中落地,事务 ACL、集群总线与模块稳定性全面加固
redis
wno70410 小时前
Spring Security Session管理
java·后端·spring
吃饱了得干活10 小时前
主键选择:从单机到分布式,一个被低估的性能决策
java·后端
haluhalu.10 小时前
初识 Protobuf:微服务跨语言通信的一份契约
java·c语言·开发语言·c++·python
Pioneer0000110 小时前
我用 Redis + 网关做多模型 API 路由:缓存命中率 95%+ 的工程实践
人工智能·redis·后端·缓存·性能优化·架构
xcl092510 小时前
宠物商城社交托运购物系统开发实战:从架构设计到完整实现指南
java·spring boot