springboot+redis实现分布式session共享
官方文档,它是spring session项目的redis相关的一个子文档:https://docs.spring.io/spring-session/docs/2.0.0.BUILD-SNAPSHOT/reference/html5/guides/boot-redis.html
在spring boot的文档中,告诉我们添加@EnableRedisHttpSession来开启spring session支持,配置如下:
@Configuration @EnableRedisHttpSession public class RedisSessionConfig { }
而@EnableRedisHttpSession这个注解是由spring-session-data-redis提供的,所以在pom.xml文件中添加:
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-redis</artifactId> </dependency> <dependency> <groupId>org.springframework.session</groupId> <artifactId>spring-session-data-redis</artifactId> </dependency>
在配置文件application.properties里配置spring session
spring.session.store-type=redis #指定redis实现spring session server.session.timeout=600 # Session 过期时间,单位s spring.session.redis.flush-mode= # Sessions 刷新模式 spring.session.redis.namespace= # Namespace for keys used to store sessions.
配置redis连接信息
spring.redis.host=localhost spring.redis.password=secret spring.redis.port=6379
加上端口号
server.port=8080
定义一个Controller
@RestController @RequestMapping(value = "/admin/v1") public class QuickRun { @RequestMapping(value = "/first", method = RequestMethod.GET) public Map<String, Object> firstResp (HttpServletRequest request){ Map<String, Object> map = new HashMap<>(); request.getSession().setAttribute("request Url", request.getRequestURL()); map.put("request Url", request.getRequestURL()); return map; } @RequestMapping(value = "/sessions", method = RequestMethod.GET) public Object sessions (HttpServletRequest request){ Map<String, Object> map = new HashMap<>(); map.put("sessionId", request.getSession().getId()); map.put("message", request.getSession().getAttribute("map")); return map; } }
复制上面的工程,把port改为9090
两个项目都启动好
首先访问8080端口的设置session
{"request Url":"http://localhost:8080/admin/v1/first"}
接着,我们访问8080端口的sessions,返回:
{"sessionId":"efcc85c0-9ad2-49a6-a38f-9004403776b5","message":"http://localhost:8080/admin/v1/first"}
最后,再访问9090端口的sessions,返回:
{"sessionId":"efcc85c0-9ad2-49a6-a38f-9004403776b5","message":"http://localhost:8080/admin/v1/first"}
可见,8080与9090两个服务器返回结果一样,实现了session的共享
如果此时再访问9090端口的first的话,首先返回:
{"request Url":"http://localhost:9090/admin/v1/first"}
而两个服务器的sessions都是返回:
{"sessionId":"efcc85c0-9ad2-49a6-a38f-9004403776b5","message":"http://localhost:9090/admin/v1/first"}
这个时候打开redis客户端,可以查询到session信息已经保存在redis里。
注意点:
1.Redis版本要在2.8+
转载于:https://www.cnblogs.com/heyy520/p/9899279.html
springboot+redis实现分布式session共享相关推荐
- Spring Session + Redis实现分布式Session共享
2019独角兽企业重金招聘Python工程师标准>>> 通常情况下,Tomcat.Jetty等Servlet容器,会默认将Session保存在内存中.如果是单个服务器实例的应用,将S ...
- java分布式会话redis_详解springboot中redis的使用和分布式session共享问题
对于分布式使用Nginx+Tomcat实现负载均衡,最常用的均衡算法有IP_Hash.轮训.根据权重.随机等.不管对于哪一种负载均衡算法,由于Nginx对不同的请求分发到某一个Tomcat,Tomca ...
- Spring Boot(十一)Redis集成从Docker安装到分布式Session共享
2019独角兽企业重金招聘Python工程师标准>>> 一.简介 Redis是一个开源的使用ANSI C语言编写.支持网络.可基于内存亦可持久化的日志型.Key-Value数据库,并 ...
- 170222、使用Spring Session和Redis解决分布式Session跨域共享问题
使用Spring Session和Redis解决分布式Session跨域共享问题 原创 2017-02-27 徐刘根 Java后端技术 前言 对于分布式使用Nginx+Tomcat实现负载均衡,最常用 ...
- java redis实现session共享_redis实现分布式session共享
在讲解redis分布式session共享之前,我们先聊聊tomcat中session管理机制,包括:请求过程中session操作,sessionid解析过程,servlet获取session流程,以及 ...
- 场景应用:利用Redis实现分布式Session
文章目录 原理:Redis实现分布式Session web开发session 分布式session同步问题 分布式session解决方案 实战:Redis实现分布式Session 技术栈:Spring ...
- Springboot整合springsession实现session共享
Springboot整合springsession实现session共享 简介 session我们之前有介绍过(可见springboot整合springsecurity),简单来说就是将用户信息或者数 ...
- 分布式Session共享和单点登录实现
文章目录 基于Session的身份认证 简介 实现 分布式Session共享 简介 实现 单点登陆 简介 实现过程 总结 基于Session的身份认证 简介 对于一个Web应用,客户端每次请求时,服务 ...
- 分布式Session共享的4类技术方案,与优劣势比较
分布式Session共享的4类技术方案,与优劣势比较 什么是session 什么是session一致性问题? 分布式session Session一致性解决方案 1.什么是session 服务器为每个 ...
最新文章
- ${pageContext.request.contextPath}无效
- C语言判断一个数是否是回文数
- Navicat for SQL Server(SQLServer数据库管理)
- 道家遁甲式(又名道家奇门)
- ubuntu 16gcc g++版本降级
- 【笔记】iOS开发基础笔记二
- Bootstrap3代码模板
- 网络安全:教你五招服务器安全维护技巧
- JAVA常见异常解析
- 面试官问你的缺点是什么,应该如何回答?
- 实验8 OpenGL太阳系动画
- chessbase(ChessBase Mega)
- 客服坐席聊天页面html,WebSocket实现简单客服聊天系统
- 笔记本电脑开机没画面/黑屏没反应怎么办?
- github官网老是打不开
- 【HTML+CSS】字体字号行高
- 3. Unity之三维模型
- //数据结构:先序、中序、后序遍历二叉树。输入数据:abd##eg###c#f#h##
- VMware安装后界面显示为英文
- 深度学习_深度学习基础知识_TTA(测试时增强)
热门文章
- 5g空分复用技术_5G十大关键技术之三的空分复用
- java bootclasspath
- 最强的游戏计算机,这可能是市面上体积最小性能最强的游戏主机了
- android o测试版,一加手机可升级!谷歌已正式推送Android O测试版系统
- linux uboot nfs启动,uboot中利用TFTP和NFS加载镜像到ram运行
- aix卸载java,AIX系统学习之--卸载软件错误
- java 输出全年日期_Java 输出某一年所有的日期
- mysql 语句性能分析_mysql的sql语句的性能诊断分析
- matlab parfor不能用,matlab中parfor函数
- datagrid wpf 刷新数据_c# – WPF Datagrid-自动刷新