Spring Boot框架如何通过Redis实现Session共享
首先了解一下Spring Boot
,Spring Boot
是由Pivotal
团队提供的全新框架,其设计目的是用来简化新Spring
应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。
Spring Boot
特点包含如下:
1. 创建独立的Spring
应用程序
2. 嵌入的Tomcat
,无需部署WAR
文件
3. 简化Maven
配置
4. 自动配置Spring
5. 提供生产就绪型功能,如指标,健康检查和外部配置
6. 绝对没有代码生成和对XML
没有要求配置
下面讲述一下如何通过Spring Boot
框架实现Redis Session
共享,首先准备一个Redis服务本地启动即可。
步骤一引入相关依赖jar
包,在maven
的pom.xml
文件中增加如下依赖:
<dependencies> <!-- ...省略其他jar包 --> <dependency> <groupId>org.springframework.session</groupId> <artifactId>spring-session</artifactId> <version>1.2.2.RELEASE</version> </dependency> <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> <version>1.2.2.RELEASE</version> <type>pom</type> </dependency> <!-- ...省略其他jar包 --> </dependencies>
步骤二使用Spring Boot中@EnableRedisHttpSession注解开启Spring session支持,新建RedisSessionConfig.java类,具体代码如下:
@Configuration @EnableRedisHttpSession(maxInactiveIntervalInSeconds = 86400*30) public class RedisSessionConfig { @Bean public JedisConnectionFactory connectionFactory() { return new JedisConnectionFactory(); } }
分析:@EnableRedisHttpSession注解其中maxInactiveIntervalInSeconds参数是设置Session失效时间,开启注解后spring会生成一个新的拦截器,用于实现Session共享操作,配置的@Bean注解让Spring根据配置文件连接Redis服务。
步骤三配置Redis服务,在项目中使用redis.properties文件,增加如下配置信息,用于连接Redis服务:
spring.redis.database=0 spring.redis.host=127.0.0.1 spring.redis.password=123456 spring.redis.port=6379 spring.redis.timeout=0
host是redis服务地址,password是密码一般默认密码为空,port是端口号,database数据库索引默认为0,timeout是连接超时时间(毫秒),其他参数省略。
步骤四测试方法获取sessionid值,具体代码如下:
@RequestMapping("/uid") public String uid(HttpSession session) { UUID uid = (UUID) session.getAttribute("uid"); if (uid == null) { uid = UUID.randomUUID(); } session.setAttribute("uid", uid); return session.getId(); }
登录redis服务输入命令“keys '*sessions*'”,结果如下:
spring:session:sessions:57de45f-c91b-5dd0-98c1-b28e1b8a1355 spring:session:expirations:1472976480000
其中“1472976480000”为失效时间含义是超过这个时间就会被销毁,“57de45f-c91b-5dd0-98c1-b28e1b8a1355”为sessionid值,登录访问http://localhost:8080/uid地址会发现是结果相同,说明session已经在redis服务中被有效的存储。
有的人会问如何在两台或多台服务上实现共享session,其实原理很简单参考上述步骤在另外一个项目中配置一次,启动后就会实现session共享。
本文地址:https://blog.yoodb.com/yoodb/article/detail/1311
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
为什么要用分布式集群任务调度?
作为一个开发者,避免不了定时任务的问题,最粗暴和简单直接的解决方案就是crontab。当然在机器少,任务不多,定时任务之间关联少的情况下,crontab效率还是比较高和便捷的。但当机器越多、定时任务越多,各个任务联系越紧密的情况下,用crontab进行定时任务的管理配置,就会非常混乱,严重影响工作效率。 机器多、定时任务多的情况下,就会遇到以下问题: 1、每个服务器各个用户下的crontab任务管理混乱,生命周期无法统一协调管理 2、定时任务运行异常告警难以统一对接 3、任务A和任务B如果存在互斥关系,crontab很难进行互斥处理 4、随着时间增长,当定时任务达到几千上万的时候,定时任务就非常难以管理,线上跑了多个定时任务,每个定时任务什么时候运行,属于哪个应用和哪个开发负责等等问题变得很难解决。 Linux原生Crontab调度系统和Quartz对比: 1、执行粒度方面: Crontab:进程调度 Quartz:线程调度 线程调度优势:一是更节省资源,二是可以在进程内做数据交换,做数据交换这点很重要。 2、平台依赖性: Crontab支持Linux系统 Quartz由于是Java实...
- 下一篇
这些年我们正在追的:Spark与数据的机器学习
机器学习可以从数据中得到有用的见解. 目标是纵观Spark MLlib,采用合适的算法从数据集中生成见解。对于 Twitter的数据集, 采用非监督集群算法来区分Apache Spark-相关的tweets . 初始输入是混合在一起的tweets. 首先提取相关特性, 然后在数据集中使用机器学习算法 , 最后评估结果和性能. 本章重点如下: •了解 Spark MLlib 模块及其算法,还有典型的机器学习流程 . • 预处理 所采集的Twitter 数据集提取相关特性, 应用非监督集群算法识别Apache Spark- 相关的tweets. 然后, 评估得到的模型和结果. • 描述Spark 机器学习的流水线. Spark MLlib 在应用架构中的位置 先集中关注分析层,准确一点说是机器学习. 这是批处理和流处理数据学习的基础,它们只是推测的规则不同。 下图指出了在分析层处理探索式数据分析的工具 Spark SQL和Pandas外,还有机器学习模块. 4-1 Spark MLlib in Architect Spark MLlib 算法分类 Sp...
相关文章
文章评论
共有0条评论来说两句吧...