首先了解一下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共享。
后续内容持续更新,如果对技术感兴趣想成为全栈开发工程师或者想从事互联网开发的朋友,欢迎大家关注头条号“路人宅”,也就是小编本人,感谢大家的支持。后期不定期更新Java、Python、Redis缓存、Spring源码、各类框架、NoSQL非关系型数据库、Mysql、Oracle、各类框架,大数据云计算Storm、Hadoop、MapReduce、elasticsearch以及操作系统、单点登录统一认证、分布式框架、集群等等,闻道有先有大家共勉吧!
大家努力学习,共同进步。关注微信号“优哉游哉”,免费领取视频资料,互联网的道路上,从此不迷路!O(∩_∩)O~
关注下方微信公众号“Java精选”(w_z90110),回复关键词领取资料:如Mysql、Hadoop、Dubbo、Spring Boot等,免费领取视频教程、资料文档和项目源码。
本站文章除注明转载外,均由 素文宅 整理发布,欢迎任何形式的转载,但请务必注明出处。
转载请注明:文章转载自 素文宅博客 [https://blog.yoodb.com/]
本文标题:Spring Boot框架如何通过Redis实现Session共享
平凡
(2017/07/20 14:56:54)回复
看着挺简单,redis seeion共享配置方式这么轻松阿!照着你写的配置了一下确实成功啦。非常感谢,已收藏!有空就来看看
分享:
支付宝
微信
逍遥王 (2019/07/30 14:14:43)回复
如果两个微服务之间如何session共享?
路人甲 (2019/07/30 16:06:19)回复
这篇文章就是解决session共享问题的,相当于把session存储到redis缓存中,每次调用使用即可。 或者您再看看这篇文章:https://blog.yoodb.com/yoodb/article/detail/1530