news 2026/4/24 5:51:31

SpringBoot + Redis 实现分布式 Session 共享(解决多实例登录状态丢失问题)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
SpringBoot + Redis 实现分布式 Session 共享(解决多实例登录状态丢失问题)

一、前言

在做电商项目时,很多同学会遇到这个问题:
1.单实例登录正常,部署多台服务器后,用户一会登录、一会未登录
2.用 Nginx 负载均衡,请求落到不同实例,Session 不共享,登录状态丢失
3.用 JWT 无状态方案,但 token 无法主动失效,退出登录要等过期

今天给你一套企业级通用的分布式 Session 共享方案,用 Redis 存储 Session,所有实例共享登录状态,解决多节点部署问题,代码直接复制就能用。

二、引入依赖

<!--SpringSession+Redis--><dependency><groupId>org.springframework.session</groupId><artifactId>spring-session-data-redis</artifactId></dependency><!--Redis客户端--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId></dependency>

三、Redis 配置(application.yml)

spring:redis:host:127.0.0.1port:6379password:database:0session:store-type:redis timeout:1800#Session超时时间,单位秒(30分钟)

四、开启 Redis Session(启动类加注解)

importorg.springframework.boot.SpringApplication;importorg.springframework.boot.autoconfigure.SpringBootApplication;importorg.springframework.session.data.redis.config.annotation.web.http.EnableRedisHttpSession;@SpringBootApplication@EnableRedisHttpSession(maxInactiveIntervalInSeconds=1800)publicclassShopApplication{publicstaticvoidmain(String[]args){SpringApplication.run(ShopApplication.class,args);}}

五、登录接口(和原来一样,不用改业务代码)

@PostMapping("/login")publicResultlogin(Stringusername,Stringpassword,HttpSessionsession){// 1. 校验用户名密码Useruser=userService.getByUsername(username);if(user==null||!passwordEncoder.matches(password,user.getPassword())){returnResult.fail("用户名或密码错误");}// 2. 登录成功,存入 Sessionsession.setAttribute("userId",user.getId());session.setAttribute("username",user.getUsername());returnResult.success("登录成功");}

六、登录校验拦截器(Session 方式)

@ComponentpublicclassLoginInterceptorimplementsHandlerInterceptor{@OverridepublicbooleanpreHandle(HttpServletRequestrequest,HttpServletResponseresponse,Objecthandler)throwsException{HttpSessionsession=request.getSession();ObjectuserId=session.getAttribute("userId");if(userId==null){response.setContentType("application/json;charset=UTF-8");response.getWriter().write(JSON.toJSONString(Result.fail(401,"请先登录")));returnfalse;}returntrue;}}

七、拦截器注册

@ConfigurationpublicclassWebConfigimplementsWebMvcConfigurer{@OverridepublicvoidaddInterceptors(InterceptorRegistryregistry){registry.addInterceptor(newLoginInterceptor()).addPathPatterns("/**").excludePathPatterns("/login","/register","/error");}}

八、效果演示

1.多台服务器部署,Session 存在 Redis 中,所有实例共享
2.用户在实例 A 登录,请求落到实例 B 也能识别登录状态
3.调用 session.invalidate() 直接清掉 Redis 中的 Session,实现主动登出
4.超时自动失效,和单机 Session 体验完全一致

九、适用场景

1.电商系统集群部署
2.前后端分离项目多实例
3.需要主动失效登录状态的场景
4.不想改业务代码,从单机平滑升级到分布式

十、优点对比

十一、总结

分布式 Session 共享是电商项目从单机走向集群的关键一步,也是面试高频考点。这套方案完全兼容传统 Session API,不用改业务代码,就能实现分布式部署,解决登录状态丢失问题,毕设和企业项目都非常加分。
互动引导
你现在的电商项目是单机部署还是准备做集群?评论区说说你的部署方式,我帮你优化成分布式架构!
有用点赞 + 收藏,关注我持续更新 SpringBoot 电商项目实战干货!

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/24 5:50:05

本地部署开源个人财务管理工具 Firefly III 并实现外部访问

Firefly III 是一款开源、自托管的个人财务管理工具&#xff0c;采用复式记账系统&#xff0c;它可以帮助你集中追踪所有收入、支出、预算、信用卡、储蓄账户甚至共享家庭账户&#xff0c;并通过直观的报表和图表清晰展示你的财务状况。本文将详细介绍如何利用 Docker 在局域网…

作者头像 李华
网站建设 2026/4/24 5:48:38

专利资产成熟度认证白皮书解读(三)

专利资产成熟度认证白皮书解读&#xff08;三&#xff09;&#xff1a;三维评价模型&#xff08;一&#xff09;&#xff1a;市场价值——专利资产的商业力量引言&#xff1a;专利价值的“灵魂”在哪里&#xff1f;前两篇文章我们回答了“什么是专利资产”以及“专利资产的类型…

作者头像 李华
网站建设 2026/4/24 5:48:22

WanVideo_Cofy:AI 驱动的开源专业级视频生成平台全解析

一、平台简介 WanVideo_Cofy&#xff08;全称 WanVideo ComfyUI&#xff0c;常简称为 WanVideo_Cofy&#xff09;是基于阿里云通义万相 Wan 2 系列视频生成模型&#xff08;核心为 Wan 2.2&#xff09;深度定制、依托 ComfyUI 可视化节点编辑器打造的开源 AI 视频生成一体化解…

作者头像 李华
网站建设 2026/4/24 5:47:40

SSCom跨平台串口调试工具:Qt架构设计与嵌入式开发实战深度解析

SSCom跨平台串口调试工具&#xff1a;Qt架构设计与嵌入式开发实战深度解析 【免费下载链接】sscom Linux/Mac版本 串口调试助手 项目地址: https://gitcode.com/gh_mirrors/ss/sscom SSCom是一款基于Qt框架开发的跨平台串口调试工具&#xff0c;专为Linux和macOS系统设计…

作者头像 李华
网站建设 2026/4/24 5:46:33

别再乱调了!Arcgis Pro出图打印前,这5个页面设置参数必须检查一遍

别再乱调了&#xff01;Arcgis Pro出图打印前&#xff0c;这5个页面设置参数必须检查一遍 刚完成的地图设计在屏幕上看起来完美无缺&#xff0c;却在打印或导出时遭遇文字错位、比例失调甚至关键要素丢失&#xff1f;这可能是每个Arcgis Pro新手都会经历的挫败时刻。不同于普通…

作者头像 李华
网站建设 2026/4/24 5:44:19

Preact 开发者学 Angular:Angular 完全对照手册

一、为什么要写这篇文章做过 Angular 转 Vue3 迁移的同学都知道——光看文档是不够的。文档告诉你 API 怎么用&#xff0c;但不会告诉你哪些"习惯性写法"在新框架里会悄悄出错&#xff0c;还不报错。本文来自真实迁移经历&#xff0c;整理了 6 类高频踩坑场景&#x…

作者头像 李华