Spring session + redis 实现 session共享入门
2021/4/25 19:27:44
本文主要是介绍Spring session + redis 实现 session共享入门,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
Spring session + redis 实现 session共享入门
最近学习接触到了 nginx 下 多个服务 session 共享问题,spring session 提供了简便的解决方案。
1、session 介绍
由于 HTTP 协议是无状态的协议,所以服务端需要记录用户的状态时,就需要用某种机制来识具体的用户。Session 是另一种记录客户状态的机制,不同的是 Cookie 保存在客户端浏览器中,而 Session 保存在服务器上。客户端浏览器访问服务器的时候,服务器把客户端信息以某种形式记录在服务器上。这就是 Session。客户端浏览器再次访问时只需要从该 Session 中查找该客户的状态就可以了。
2、session 共享
用户的请求首先会到达前置网关,前置网关根据路由策略将请求分发到后端的服务器,这就会出现第一次的请求会交给服务器 1 处理,下次的请求可能会是服务B处理,如果不做 Session 共享的话,就有可能出现用户在服务 2登录了,下次请求的时候到达服务 2 又要求用户重新登录。
3、Spring session + redis 配置
Spring Session 提供了一套创建和管理 Servlet HttpSession 的方案。Spring Session 提供了集群 Session(Clustered Sessions)功能,默认采用外置的 Redis 来存储 Session 数据(不用手动存储到redis中),以此来解决 Session 共享的问题。
3.1、引入依赖
<!-- redis --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> </dependency> <!--支持session共享 --> <dependency> <groupId>org.springframework.session</groupId> <artifactId>spring-session-data-redis</artifactId> </dependency>
3.2 、redis 配置
#redis spring.redis.port=6379 spring.redis.host=127.0.0.1 spring.redis.password=123456 spring.redis.database=15 #最大连接数 spring.redis.jedis.pool.max-active=100 #最大等待数 spring.redis.jedis.pool.max-idle=8 #等待时间 spring.redis.jedis.pool.max-wait=60000 #spring-session spring.session.store-type=redis
3.3、测试
现在模拟用户登录接口,打开浏览器,分别调用 localhost:8080/lin/user/login 和 localhost:8081/lin/user/login两个接口,两次调用端口不同。
@GetMapping(value = "/login") @ResponseBody public Result login(HttpSession session) { if (session.getAttribute("userId") == null) { //将在redis操作session session.setAttribute("userId","123456"); logger.info("====session为空======="); } else { logger.info("=========session========" + session.getAttribute("userId")); } return ResultUtil.success(); }
查看 redis 或 日志,发现只在第一次调用生成 session,因此实现了session的共享。
3.4、注意点
对于不同根域名的场景,要实现一处登录,处处登录,Spring Session不支持
比如:
- www.web.com
- www.myweb.com
- www.webtest.com
ip和域名会产生不同的sessionid。
参考资料1:https://blog.csdn.net/asd33398/article/details/82998145
参考资料2:https://blog.csdn.net/qq_39669058/article/details/90235990
这篇关于Spring session + redis 实现 session共享入门的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-23Springboot应用的多环境打包入门
- 2024-11-23Springboot应用的生产发布入门教程
- 2024-11-23Python编程入门指南
- 2024-11-23Java创业入门:从零开始的编程之旅
- 2024-11-23Java创业入门:新手必读的Java编程与创业指南
- 2024-11-23Java对接阿里云智能语音服务入门详解
- 2024-11-23Java对接阿里云智能语音服务入门教程
- 2024-11-23JAVA对接阿里云智能语音服务入门教程
- 2024-11-23Java副业入门:初学者的简单教程
- 2024-11-23JAVA副业入门:初学者的实战指南