zoukankan      html  css  js  c++  java
  • 【快学springboot】11.整合redis实现session共享

    前言

    这里都是基于前面的项目基础上的。springboot整合redis非常的方便,这也是springboot的宗旨,简化配置。这篇文章就教大家如何使用springboot整合redis来实现session共享。

    引入依赖

    <dependency>
    
    <groupId>org.springframework.boot</groupId>
    
    <artifactId>spring-boot-starter-data-redis</artifactId>
    
    </dependency>
    
    <dependency>
    
    <groupId>org.springframework.session</groupId>
    
    <artifactId>spring-session-data-redis</artifactId>
    
    </dependency>
    

    配置redis

    在application.properties中配置redis

    # Redis服务器地址
    
    spring.redis.host=localhost
    
    # Redis服务器连接端口
    
    spring.redis.port=6379
    
    # Redis服务器连接密码(默认为空)
    
    spring.redis.password=
    

    因为我本地redis没有设置密码,所以密码这里留空。这个配置项可以去掉,但是我留在这是是想告诉大家可以在这里配置redis密码

    实现session共享

    其实springboot实现session共享非常的方便,只需要一个@EnableRedisHttpSession注解即可。把该注解加在springboot启动类的上面。

    【快学springboot】11.整合redis实现session共享

    到这里,已经实现redis存储session的功能了。下面通过一个简单例子测试下session是否存储在redis中了。

    新建一个SessionController.java,并且写一个设置session的方法,如下:

    【快学springboot】11.整合redis实现session共享

    启动项目,通过postman调用,如下:

    【快学springboot】11.整合redis实现session共享

    通过redis可视化工具,查看redis中是否存在该属性:

    【快学springboot】11.整合redis实现session共享

    通过查看,happyjava已经存在redis中了。

    使用nginx测试

    通过上面的例子,已经证明了session被redis存储了,下面,我们通过把应用启动在两个端口,使用nginx转发,测试session是否真的共享了。

    nginx.config配置

    upstream session_server {
    
    server 127.0.0.1:8080;
    
    server 127.0.0.1:8081;
    
    }
    
    server {
    
    listen 80;
    
    server_name localhost;
    
    location / {
    
    proxy_pass http://session_server;
    
    proxy_set_header Host $host;
    
    }
    
    }
    

    这里把localhost这个请求,转发到了本地的8080和8081端口。

    通过server.port指定程序的端口号

    application.properties

    server.port=8081
    

    写一个获取session的方法

    SessionController.java

    【快学springboot】11.整合redis实现session共享

    这里通过Value注解获取了配置文件的server.port属性,并且通过getSession方法返回。

    把程序启动在两个端口

    IDEA设置可以多次启动同个main方法。

    【快学springboot】11.整合redis实现session共享

    【快学springboot】11.整合redis实现session共享

    把Allow paralled run勾上,即可多次启动一个main方法了。我们先把server.port设置为8080启动一次,然后改为8081再次启动。

    通过postman多次调用,可以获得结果如下:

    【快学springboot】11.整合redis实现session共享

    【快学springboot】11.整合redis实现session共享

    可以看到,port分别出现了8080和8081,并且都能够正常获取到之前设置的happyjava这个值,说明session共享已经配置成功了。

    总结

    springboot配置session共享是非常方便的,只需要EnableRedisHttpSession注解即可。其实也可以使用EnableMongoHttpSession注解用MongoDB来管理session。

  • 相关阅读:
    ModelBinder——ASP.NET MVC Model绑定的核心
    asp.net
    深入C#内存管理来分析 值类型、引用类型、装箱、拆箱、堆栈几个概念
    C#网络编程
    [Architecture Pattern] Service Locator
    RestSharp使用详解
    系统性能优化一例
    C#开发的高性能EXCEL导入、导出工具DataPie
    ASP.NET MVC以ValueProvider为核心的值提供系统: DictionaryValueProvider
    ASP.NET MVC以ValueProvider为核心的值提供系统: NameValueCollectionValueProvider
  • 原文地址:https://www.cnblogs.com/happy4java/p/11205831.html
Copyright © 2011-2022 走看看