spring boot通过spring session+redis实现分布式会话共享,核心是将各实例内存中的httpsession统一托管至redis,所有实例读写同一redis实例(或集群),从而实现session共享;需引入spring-boot-starter-data-redis和spring-session-data-redis依赖,配置redis连接参数并设置spring.session.store-type=redis或添加@enableredishttpsession注解,自动启用sessionrepositoryfilter接管session生命周期。

Spring Boot 通过集成 Spring Session + Redis 实现分布式会话共享,核心是把原本存在各台服务器内存里的 HttpSession,统一托管到 Redis 中。所有服务实例都读写同一个 Redis 实例(或集群),自然就实现了 session 共享。
添加必要依赖
只需引入两个关键 starter:
- spring-boot-starter-data-redis:提供 Redis 连接与操作能力
- spring-session-data-redis:将 HttpSession 替换为 Redis-backed 的 Spring Session
注意:Spring Boot 2.4+ 默认使用 Lettuce 客户端,无需额外引入连接池依赖;若用较老版本,可能需补充 commons-pool2。
配置 Redis 连接参数
在 application.yml 中设置基础连接信息:
spring:
redis:
host: 127.0.0.1
port: 6379
password:
database: 0
timeout: 5000
如果 Redis 需要认证或部署在远程环境,务必填对 host、port 和 password;database 可指定使用的 Redis 库(默认 0)。
Java Maven 项目审查工作流的通用输入处理。当 Java Maven 项目以 ZIP压缩包或 GitLab 仓库 URL 形式提供且需要...时使用。
启用 Redis 会话存储
两种等效方式任选其一:
- 在
application.yml加一行:spring.session.store-type=redis - 在启动类或配置类上加注解:
@EnableRedisHttpSession
加上后,Spring Boot 会自动注册一个 SessionRepositoryFilter,拦截所有请求,接管 session 创建、读取、销毁逻辑,全部转向 Redis。
定制会话行为
常见调整包括:
-
设置过期时间:用
@EnableRedisHttpSession(maxInactiveIntervalInSeconds = 1800)(单位秒),比server.servlet.session.timeout更有效 -
指定命名空间:避免多个应用共用 Redis 时 key 冲突,如
@EnableRedisHttpSession(redisNamespace = "myapp:sessions") -
Cookie 路径与域名:确保前端请求携带的
JSESSIONIDcookie 能被所有服务识别,通常设为根路径/,且服务部署在同域下(如 Nginx 反向代理统一域名)
注意:存入 session 的对象(如用户信息)必须可序列化(实现 Serializable),否则 Redis 存储会失败;推荐改用 JSON 序列化器提升可读性与兼容性。
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










