spring boot 通过集成 redis 实现分布式会话,只需引入 spring-session-data-redis 等依赖、配置 spring.session.store-type=redis,并可选启用 json 序列化,即可透明替换内存 session,实现多实例间会话共享与集中管理。

Spring Boot 配置 Spring Session 实现分布式会话,核心是把默认的内存级 HttpSession 替换为 Redis(或其他存储)托管的集中式会话。整个过程轻量、透明,无需修改业务代码,只需依赖、配置和少量定制即可生效。
添加必要依赖
在 pom.xml 中引入 Redis 支持与 Spring Session 的 Redis 实现:
-
spring-boot-starter-data-redis:提供 Redis 连接与操作能力 -
spring-session-data-redis:桥接 Spring Session 与 Redis,自动注册SessionRepositoryFilter - 可选:
commons-pool2(提升连接池稳定性,尤其高并发场景)
配置 Redis 连接参数
在 application.properties 或 application.yml 中声明 Redis 地址、端口、密码等基础信息,并显式启用 Redis 作为会话存储:
批量分析录音转写,输出多维度拓客报告。触发词:录音分析、总结、音频总结、拜访记录总结。当用户提及「分析录音」「看看录音数据」「最近的录音」「通话记录」且意图为批量统计/分析时触发。仅出现「录音」或「拜访」时需结合上下文,若仅查看单条详情则不触发。
spring.redis.host=127.0.0.1spring.redis.port=6379-
spring.redis.password=your_password(如需) -
spring.redis.timeout=5000(毫秒,建议设置) -
spring.session.store-type=redis(关键!触发自动配置)
若使用连接池,还可补充 spring.redis.lettuce.pool.* 相关配置(如 max-active、min-idle)。
启用 JSON 序列化(推荐)
Spring Session 默认用 JDK 序列化,要求所有存入 session 的对象实现 Serializable,且二进制数据不可读、不兼容跨语言。改用 JSON 更直观、更安全:
- 自定义
RedisTemplateBean,设置GenericJackson2JsonRedisSerializer为 value 序列化器 - 确保业务对象有无参构造器、字段可被 Jackson 访问(public 字段或 getter/setter)
- 避免存 Lambda、匿名内部类、线程局部变量等非序列化内容
验证与调试要点
启动后可快速确认是否生效:
- 访问任意带
request.getSession()的接口,观察 Redis 中是否生成以spring:session:sessions:开头的 Hash key - 检查响应 Cookie 是否含
SESSION(Spring Session 默认 Cookie 名),而非传统JSESSIONID - 多实例部署时,同一用户在不同服务节点间切换,
session.getAttribute()仍能取到一致数据 - 手动
redis-cli del删除 session key,再次请求将创建新会话,体现集中管控能力










