springboot+redis+nginx+分布式session

Posted 宋发准

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了springboot+redis+nginx+分布式session相关的知识,希望对你有一定的参考价值。

 

 

 

 

 

第一步

启动一个redis

 我这里用的是windows版本的redis,进入磁盘后启动redis

启动命令:redis-server.exe redis.windows.conf

 

 

启动nginx

主要是配置一下

 

 

worker_processes  1;

events {
    worker_connections  1024;
}

http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    
    upstream tomcatserver {  
        server 127.0.0.1:8080; 
        server 127.0.0.1:8090;
    } 
    
    server {
        listen       80;
        server_name  localhost;

        location / {
            proxy_pass   http://tomcatserver;
            
            proxy_pass_header Server;
            proxy_set_header Host $http_host;
            proxy_set_header X_Real_IP $remote_addr;
            proxy_set_header X-Scheme $scheme;

        }
        
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    } 
}

 

然后开始写代码

 

 

 

使用springboot

 

 

在pom文件中加入依赖

 

 <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>

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

 

修改配置文件

spring.redis.host=127.0.0.1
spring.redis.port=6379
spring.redis.password=123456

 

@SpringBootApplication
@EnableRedisHttpSession
public class SpringbootApplication {


    public static void main(String[] args) {
        SpringApplication.run(SpringbootApplication.class, args);
    }

}

 

 

@RestController
public class Hello {


    @RequestMapping("/hello")
    public String Hellen(HttpServletRequest request) {
        HttpSession session = request.getSession();
        System.out.println(session.getId());
        System.out.println(System.currentTimeMillis());
        return session.getId() + "";
    }
}

 

 

在启动的时候指定端口号

 

 

 

 

 

可以看到已经是负载均很了,而且session共享了

注意一个坑

谷歌浏览器不要点刷新按钮,这个会全部请求在一个服务器上,不知道什么原因。

 

以上是关于springboot+redis+nginx+分布式session的主要内容,如果未能解决你的问题,请参考以下文章

java架构师,高并发,分布式,集群,大型高并发电商项目实战视频教程

Redis分布式锁详解(Redisson)

Redis分布式锁详解(Redisson)

大型电商分布式网站架构设计与实践,Java分布式架构,Java事务分布式高并发-视频教程

redis--springboot实现redis的分布式锁

SpringBoot进阶之缓存中间件Redis