您现在的位置是:首页 > 文章详情

Spring Boot框架如何通过Redis实现Session共享

日期:2018-11-29点击:556

首先了解一下Spring BootSpring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。

Spring Boot特点包含如下:

1. 创建独立的Spring应用程序

2. 嵌入的Tomcat,无需部署WAR文件

3. 简化Maven配置

4. 自动配置Spring

5. 提供生产就绪型功能,如指标,健康检查和外部配置

6. 绝对没有代码生成和对XML没有要求配置


下面讲述一下如何通过Spring Boot框架实现Redis Session共享,首先准备一个Redis服务本地启动即可。

步骤一引入相关依赖jar包,在mavenpom.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

原文链接:https://blog.roncoo.com/article/131387
关注公众号

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。

持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。

转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。

文章评论

共有0条评论来说两句吧...

文章二维码

扫描即可查看该文章

点击排行

推荐阅读

最新文章