`

spring boot + redis 实现session共享

 
阅读更多

这次带来的是spring boot + redis 实现session共享的教程。

 

在spring boot的文档中,告诉我们添加@EnableRedisHttpSession来开启spring session支持,配置如下:

Java代码  
@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中配置redis服务器的位置了,在这里,我们就用本机:

spring.redis.host=localhost  
spring.redis.port=6379
 

这样以来,最简单的spring boot + redis实现session共享就完成了,下面进行下测试。

 

首先我们开启两个tomcat服务,端口分别为8080和9090,在application.properties中进行设置   

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;  
    }  
} 
 

启动之后进行访问测试,首先访问8080端口的tomcat,返回  

{"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"}  

 通过spring boot + redis来实现session的共享非常简单,而且用处也极大,配合nginx进行负载均衡,便能实现分布式的应用了。

本次的redis并没有进行主从、读写分离等等配置(_(:з」∠)_其实是博主懒,还没尝试过.......)

而且,nginx的单点故障也是我们应用的障碍......以后可能会有对此次博客的改进版本,比如使用zookeeper进行负载均衡,敬请期待。

分享到:
评论

相关推荐

    springboot +shiro+redis实现session共享(方案二)1

    "Spring Boot + Shiro + Redis 实现 Session 共享方案二" 1. 概述 本文档旨在介绍如何使用 Spring Boot、Shiro 和 Redis 实现分布式 session 共享,以解决 Web 应用程序的登录 session 统一问题。 2. 相关依赖 ...

    Spring Session + redis实现session共享

    Spring Session的核心思想是将session数据从传统的JVM内存中移出,存储到一个独立的数据存储系统,如Redis,这样可以实现session在多台服务器之间的共享。 Redis是一个高性能的键值数据库,常用于缓存和消息代理。...

    Springboot+SpringSecurity+SpringSession+Redis+Mybatis-Plus+Swwager.zip

    本项目“Springboot+SpringSecurity+SpringSession+Redis+Mybatis-Plus+Swwager”整合了Spring Boot、Spring Security、Spring Session、Redis、Mybatis-Plus以及Swagger等技术,旨在构建一个强大的、安全的、具有...

    nginx+spring-session+redis 实现session共享

    标题 "nginx+spring-session+redis 实现session共享" 涉及到的是在分布式系统中如何处理会话(session)共享的问题。在分布式环境中,由于用户请求可能被路由到不同的服务器节点,传统的session存储方式(如JVM内存...

    nginx+redis实现session共享

    在IT行业中,构建高效、可扩展的Web服务是至关重要的,而"nginx+redis实现session共享"的主题就涉及到了这一核心需求。为了实现单点登录(Single Sign-On, SSO)以及跨应用的session共享,我们可以结合使用Nginx作为...

    springboot + redis实现session共享

    本文将详细解释如何使用Spring Boot和Redis来实现session共享,并探讨相关的核心概念和技术。 首先,我们要了解什么是session。在Web应用程序中,session是一种用于跟踪用户状态的技术。当用户登录后,服务器会为该...

    基于Springboot+Mybatis+ SpringMvc+springsecrity+Redis完整网站后台管理系统

    项目描述 说明: spring security 全注解式的权限管理 动态配置权限,角色和资源,权限控制到...Springboot+Mybatis+ SpringMvc+springsecrity+Redis+bootstrap+jquery 数据库文件 压缩包内 jar包文件 maven搭建

    SpringSession+Redis实现Session共享案例

    SpringSession结合Redis实现Session共享是Web开发中一种常见的解决方案,特别是在分布式系统中,为了保持用户在不同服务器之间访问时的会话一致性。本案例旨在教你如何配置和使用SpringSession与Redis来达到这一目的...

    springboot+Nginx+redis实现session共享

    本教程将详细讲解如何利用Spring Boot、Nginx和Redis来实现高效的Session共享,以满足大规模并发场景下的会话管理需求。 **Spring Boot与Session管理** Spring Boot是基于Spring框架的快速开发工具,它简化了配置...

    Spring Boot + Spring Session + Redis

    标题 "Spring Boot + Spring Session + Redis" 涉及到的是在Java开发中,使用Spring Boot框架集成Spring Session和Redis来实现会话管理的技术方案。这个解决方案主要解决分布式系统中的session共享问题,使得用户在...

    Spring+Redis+Nginx实Session共享的Demo

    本示例“Spring+Redis+Nginx实Session共享的Demo”提供了一种解决方案,利用Spring、Redis缓存和Nginx反向代理来实现跨服务器的Session一致性。 首先,我们来理解每个组件的作用: 1. **Spring**:这是一个广泛...

    spring boot与redis 实现session共享教程

    本文主要介绍了使用spring boot与redis实现session共享的教程,旨在帮助读者了解如何使用spring boot和redis实现session共享。下面是本文的知识点总结。 一、Spring Boot与Redis实现Session共享的必要依赖项 在...

    Springboot+redis+mybatisplus实例

    此外,Spring Session可以利用Redis来实现会话共享,提高分布式应用的用户体验。 **Spring Boot整合MyBatis-Plus** 集成MyBatis-Plus,首先在`pom.xml`中添加MyBatis-Plus和MyBatis的依赖。然后,在`application....

    SpringSession+redis共享jar包

    SpringSession通过将Session数据持久化到外部存储,如Redis,实现了跨服务器的Session共享。 Redis 是一个高性能的键值数据库,常被用作缓存和消息代理。在SpringSession中,Redis被用作Session的存储后端,因为其...

    springboot+redis共享session(Demo)

    本项目“springboot+redis共享session(Demo)”旨在演示如何在Spring Boot应用中结合Redis实现session的分布式共享,从而解决在集群环境中session不一致的问题。 首先,我们来理解一下session的基本概念。Session是...

    Spring Boot Redis Session 共享(Ajax 跨域)

    总结,通过Spring Boot结合Redis,我们可以实现高效的分布式Session共享,确保用户会话在多服务器环境下的一致性。同时,通过CORS配置,我们解决了Ajax跨域问题,使得前端可以无障碍地与后端进行交互。这两个功能...

    Spring Boot Redis Session 共享

    Spring Boot结合Redis作为Session存储机制,能够实现高效且可靠的Session共享。本篇将深入探讨如何在Spring Boot项目中利用Redis进行Session共享。 首先,我们需要理解Spring Boot和Redis的基础。Spring Boot是...

    Spring+Struts2+hibernate+Redis整合

    在SSH+Redis的整合中,Spring不仅作为业务层的管理框架,还可以通过其提供的JedisTemplate或RedisTemplate来实现对Redis的操作。 2. **Struts2框架**:Struts2是一个基于MVC设计模式的Web应用框架,用于处理用户...

    springboot+shiro+redis整合

    通过以上步骤,我们成功地将SpringBoot、Shiro和Redis整合在一起,实现了基于Shiro的安全控制和Redis的Session共享。这种架构方案适用于大型分布式系统,能够提供稳定、高效且安全的用户体验。在实际应用中,还可以...

Global site tag (gtag.js) - Google Analytics