讲师中心 微信公众号

工具推荐

视频效率加速
AniShort
AniShort

AI短剧协同制作平台

updream

一键生成高质量推广成片

Seko
Seko

AI短剧一键生成成片

立刻MV
立刻MV

低成本歌曲 MV、视频生成

集群怎么用Redis共享Session_引入SpringSession依赖

酷静吖_4812

酷静吖_4812

发布时间:2026-05-02 12:51:16

|

868人浏览过

|

来源于php中文网

原创

直接引入 spring-session-data-redis 即可,它自动适配 Spring Boot 2.7+ 的 Lettuce;避免手动引入 jedis、错误配置 redis 属性、使用默认 JDK 序列化,需改用 GenericJackson2JsonRedisSerializer,并确保 Redis 高可用与 Cookie 正确隔离。

集群怎么用redis共享session_引入springsession依赖

Spring Session Redis 依赖怎么加才不冲突

直接用 spring-session-data-redis,别选 spring-session(老版本)或 spring-boot-starter-redis(已废弃)。Spring Boot 2.7+ 默认用 Lettuce,Lettuce 依赖 io.lettuce:lettuce-core,Maven 里只要声明 spring-session-data-redis,它会自动拉取匹配的 Lettuce 版本。

常见踩坑点:

  • 手动引入了旧版 redis.clients:jedis,和 Lettuce 冲突,导致连接池初始化失败或 RedisConnectionFactory 类型不匹配
  • 用了 Spring Boot 3.x 却还配 @EnableRedisHttpSession(该注解在 3.x 中已移至 org.springframework.session.config.annotation.web.http.EnableSpringHttpSession,但实际更推荐纯配置方式)
  • spring.redis.* 配置没写对,比如把 spring.redis.host 写成 spring.redis.url 又没删 host/port,造成连接超时却报 Cannot determine embedded database driver class 这类误导性错误

Redis Session 的序列化策略必须改

默认用 JdkSerializationRedisSerializer,Java 原生序列化有严重兼容问题:类字段增减、JDK 升级、微服务多语言场景下完全不可用。必须显式切换为 JSON 序列化。

实操建议:

  • 用 GenericJackson2JsonRedisSerializer(推荐),它能处理大多数 POJO,且兼容字段增删(新增字段为 null,缺失字段忽略)
  • 避免用 StringRedisTemplate 直接操作 session key —— Spring Session 自己管理 key 前缀(如 spring:session:sessions:),手动删错 key 会导致登录态“消失但不报错”
  • 如果 session 存了自定义对象,确保该类有无参构造器 + getter/setter,否则反序列化时静默失败,HttpSession.getAttribute() 返回 null

怎么验证 Session 真的走 Redis 了

别只看应用是否启动成功,要确认三点:连接建立、key 写入、跨实例读取。

验证步骤:

  • 启动时观察日志是否有 Connected to Redis 或 Reconnected to Redis;若只有 Creating shared RedisConnectionFactory 没后续,说明配置未生效
  • 用 redis-cli 执行 keys "spring:session:sessions:*",能看到带时间戳的 key,且 TTL 和 server.max-http-session-timeout(单位秒)一致
  • 起两个相同服务实例(不同端口),用同一浏览器访问 A 实例登录,再访问 B 实例的受保护接口(如 /user/profile),能拿到用户信息才算真正共享
  • 注意:Chrome 对 localhost 同端口会复用 cookie,测试时务必用不同端口(如 8080/8081)并清空 Cookie,或改 Hosts 绑定两个域名(如 app1.test / app2.test)

集群环境下 Redis 连接必须用 Redis Sentinel 或 Redis Cluster

单节点 Redis 在生产环境等于裸奔。Spring Session 支持两种高可用模式,但配置差异大:

  • Redis Sentinel:配 spring.redis.sentinel.master + spring.redis.sentinel.nodes,底层仍走单节点连接逻辑,故障转移由 Sentinel 自动完成
  • Redis Cluster:必须用 Lettuce(Jedis 不支持 Cluster 模式下的 session 路由),配 spring.redis.cluster.nodes,且所有节点 IP 必须可被应用直连(不能只通一个入口)
  • 无论哪种,都得关掉 Lettuce 的自适应刷新(否则集群拓扑变更时可能卡住):spring.redis.lettuce.cluster.refresh.period=60000
  • 别在 application.yml 里写死密码:Sentinel/Cluster 的密码统一通过 spring.redis.password 设置,不要尝试在 nodes 字符串里拼 redis://:pwd@host:port,Lettuce 会解析失败
Redis Session 共享最常出问题的地方不在代码,而在 Redis 拓扑可见性、序列化兼容性和浏览器 Cookie 范围控制——这三处一错,现象都是“看起来正常,但就是不共享”。

热门AI工具

更多
火山引擎

火山引擎是一款面向企业的云计算与AI服务平台。

二狗PPT
二狗PPT Hot

一款AI演示文稿工具,主要用于专为中式职场打造的AI PPT生成工具,适合需要提升相关任务效率的用户。

WorkBuddy

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

Seko
Seko Hot

一款AI视频创作工具,主要用于商汤科技推出的创编一体的AI短视频创作Agent,适合需要提升相关任务效率的用户。

讯飞智作

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

Flowith
Flowith Hot

Flowith是一款基于画布和智能体工作流的 AI 协作工作空间。

Laper
Laper Hot

Laper是专为编剧、导演和制片人推出的 AI 原生剧本创作工具。

豆包大模型

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

DeepSeek

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

相关专题

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

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

2891

2025.08.06

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

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

517

2026.01.26

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

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

4889

2023.11.02

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

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

4455

2023.11.14

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

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

8592

2024.04.02

redis怎么做缓存服务器
redis怎么做缓存服务器

redis 作为缓存服务器的答案:redis 是一款开源、高性能、分布式的键值存储,可作为缓存服务器使用。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

663

2024.04.07

redis怎么解决数据一致性
redis怎么解决数据一致性

redis 提供了两种一致性模型,以维护副本数据一致性:强一致性 (sync) 确保写操作仅在复制到所有从节点后才完成;最终一致性 (async) 则在主节点上写操作后认为已完成,牺牲一致性换取性能。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

776

2024.04.07

mysql和redis怎么保证双写一致性
mysql和redis怎么保证双写一致性

确保 mysql 和 redis 双写一致性的技术包括:1、事务性更新:同时更新 mysql 和 redis,保证一致性;2、主从复制:mysql 主服务器更改同步到 redis 从服务器;3、基于事件的更新:mysql 记录更改并发送到 redis等等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

8862

2024.04.07

Postman身份认证怎么配置
Postman身份认证怎么配置

本专题从实际API接口调试场景出发,讲解Postman身份认证的完整配置流程,包括常见认证协议介绍、授权参数设置、访问令牌填写、OAuth 2.0授权及认证失败排查,帮助用户正确完成接口授权与访问验证。

40

2026.11.06

热门下载

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

精品课程

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

共0课时 | 0人学习

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

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