讲师中心 微信公众号
AI工具推荐 视频效率加速

如何在Spring Boot中通过Redis管理Session会话_引入spring-session-data-redis依赖

酷辰大大_3844

酷辰大大_3844

发布时间:2026-07-09 15:18:25

|

412人浏览过

|

来源于php中文网

原创

必须使用spring-session-data-redis,因其提供HTTP Session与Redis集成的自动拦截逻辑,而spring-boot-starter-data-redis仅支持基础Redis操作,不处理Session存储;缺少它会导致session仍存内存、分布式不共享等问题。

如何在spring boot中通过redis管理session会话_引入spring-session-data-redis依赖

必须用 spring-session-data-redis,不能只用 spring-boot-starter-data-redis 或旧版 spring-session。后者不提供自动 Session 存储能力,缺它就根本不会把 session 写进 Redis。

为什么只加 spring-boot-starter-data-redis 不行

这个 starter 只负责让 Spring Boot 能连上 Redis、操作 key-value,它完全不知道 HTTP Session 是什么。Session 管理需要额外的拦截逻辑(比如在请求进来时从 Redis 加载 session、响应出去时刷回 Redis),这部分由 spring-session-data-redis 提供。

常见错误现象:

  • 应用跑起来没报错,但 redis-cli keys * 查不到 spring:session: 开头的 key
  • 重启服务后用户仍保持登录(说明 session 还在内存里,没走 Redis)
  • 分布式部署下 session 无法共享,节点间状态不一致

spring-session-data-redis 的依赖写法(Maven)

Spring Boot 2.4+ 推荐使用以下写法(无需指定版本,由 Spring Boot BOM 管理):

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

注意点:

Build Session
Build Session

支持专注的自主工作时段,构建、创作或产出一个具体成果,并高效记录和提交进度。

下载
  • 不要同时引入 spring-session(无 data-redis 后缀)—— 它是老一代抽象层,和当前 Boot 版本不兼容
  • 不要用已废弃的 spring-boot-starter-redis(1.x 时代产物,2.x 起已移除)
  • 如果项目用了较老的 Spring Boot(如 2.1.x),需确认 spring-session-data-redis 版本 ≥ 对应 Boot 版本(例如 2.1.x 对应 2.1.x)

依赖生效后,@EnableRedisHttpSession 还要不要加

Spring Boot 2.0+ 默认启用自动配置,只要 classpath 有 spring-session-data-redis,且 spring.session.store-type=redis(或未显式设为 none),就会自动装配 Redis-backed Session。

但建议显式加注解,原因:

  • 明确表达意图,避免因配置遗漏导致 fallback 到内存 session
  • 方便控制参数:@EnableRedisHttpSession(maxInactiveIntervalInSeconds = 1800) 比配置文件更直观
  • 可配合 redisNamespace 隔离不同环境的 session key,防止冲突

不加注解时,server.servlet.session.timeout 会被忽略;加了之后,maxInactiveIntervalInSeconds 才真正生效。

最容易被忽略的一点:序列化要求

spring-session-data-redis 默认用 JdkSerializationRedisSerializer,这意味着存入 session 的所有对象都必须实现 Serializable。否则会静默失败(session 写不进 Redis,但也不报错)。

推荐做法:

  • 改用 GenericJackson2JsonRedisSerializer(需自定义 RedisTemplate bean)
  • 确保你往 HttpSession 放的对象是简单 POJO 或基本类型,避免塞 HttpServletRequest、Connection 等不可序列化对象
  • 上线前用 redis-cli monitor 观察是否有 SET 命令失败,或检查日志中是否出现 Cannot serialize 类似提示

热门AI工具

更多
超级简历WonderCV

一款AI办公效率工具,主要用于免费求职简历模版下载制作,应届生职场人必备简历制作神器,适合需要提升相关任务效率的用户。

PixTV
PixTV Hot

PixTV是一款面向AIGC内容创作的AI视频生成工具。

豆包大模型

豆包大模型是一款由字节跳动推出的企业级大语言模型服务平台。

WorkBuddy

一款AI办公效率工具,主要用于腾讯云推出的AI原生桌面智能体工作台,适合需要提升相关任务效率的用户。

AionClaw
AionClaw Hot

AionClaw是一款面向办公、创作和编程任务的AI桌面智能体。

音述AI
音述AI Hot

一款AI音频处理工具,主要用于音述AI是一个以“用声音述说故事”为核心的 AI 音乐创作与声音分享社区,适合需要提升相关任务效率的用户。

讯飞智作

讯飞智作是一款AI视频创作工具,AI文本配音工具,数字人课程、营销视频制作。

DeepSeek

DeepSeek是一款面向对话、写作、编程和推理场景的AI大模型工具。

立刻MV
立刻MV Hot

立刻MV是一款AI文本写作工具,AI 音乐视频(MV)创作工具。

相关专题

更多
spring框架介绍
spring框架介绍

本专题整合了spring框架相关内容,想了解更多详细内容,请阅读专题下面的文章。

2251

2025.08.06

Java Spring Security 与认证授权
Java Spring Security 与认证授权

本专题系统讲解 Java Spring Security 框架在认证与授权中的应用,涵盖用户身份验证、权限控制、JWT与OAuth2实现、跨站请求伪造(CSRF)防护、会话管理与安全漏洞防范。通过实际项目案例,帮助学习者掌握如何 使用 Spring Security 实现高安全性认证与授权机制,提升 Web 应用的安全性与用户数据保护。

437

2026.01.26

session失效的原因
session失效的原因

session失效的原因有会话超时、会话数量限制、会话完整性检查、服务器重启、浏览器或设备问题等等。详细介绍:1、会话超时:服务器为Session设置了一个默认的超时时间,当用户在一段时间内没有与服务器交互时,Session将自动失效;2、会话数量限制:服务器为每个用户的Session数量设置了一个限制,当用户创建的Session数量超过这个限制时,最新的会覆盖最早的等等。

580

2023.10.17

session失效解决方法
session失效解决方法

session失效通常是由于 session 的生存时间过期或者服务器关闭导致的。其解决办法:1、延长session的生存时间;2、使用持久化存储;3、使用cookie;4、异步更新session;5、使用会话管理中间件。

876

2023.10.18

cookie与session的区别
cookie与session的区别

本专题整合了cookie与session的区别和使用方法等相关内容,阅读专题下面的文章了解更详细的内容。

1826

2025.08.19

常用的数据库软件
常用的数据库软件

常用的数据库软件有MySQL、Oracle、SQL Server、PostgreSQL、MongoDB、Redis、Cassandra、Hadoop、Spark和Amazon DynamoDB。更多关于数据库软件的内容详情请看本专题下面的文章。php中文网欢迎大家前来学习。

4209

2023.11.02

内存数据库有哪些
内存数据库有哪些

内存数据库有Redis、Memcached、Apache Ignite、VoltDB、TimesTen、H2 Database、Aerospike、Oracle TimesTen In-Memory Database、SAP HANA和ache Cassandra。更多关于内存数据库相关问题,详情请看本专题下面的文章。php中文网欢迎大家前来学习。

3695

2023.11.14

mongodb和redis哪个读取速度快
mongodb和redis哪个读取速度快

redis 的读取速度比 mongodb 更快。原因包括:1. redis 使用简单的键值存储,而 mongodb 存储 json 格式的数据,需要解析和反序列化。2. redis 使用哈希表快速查找数据,而 mongodb 使用 b-tree 索引。因此,redis 在需要高性能读取操作的应用程序中是一个更好的选择。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

6632

2024.04.02

LLVM自定义Pass怎么写
LLVM自定义Pass怎么写

本专题聚焦LLVM自定义Pass开发,整理Pass类结构、run()方法、PreservedAnalyses、CMake构建、插件注册、-load-pass-plugin加载和测试用例编写流程。

0

2026.09.30

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
phpEnv手册
phpEnv手册

共0课时 | 0人学习

进程与SOCKET
进程与SOCKET

共6课时 | 0.5万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn